Show dialog alert from a non-activity class in android

后端 未结 7 1991
慢半拍i
慢半拍i 2020-12-06 02:37

I want to show an Alert Dialog via AlertDialogManager class to a non-activity class DeviceAdminReceiverSample\'s method onDisabl

7条回答
  •  情深已故
    2020-12-06 03:02

    If you always want to get the current activity from anywhere in the app you can register an ActivityLifecycleCallback on your Application instance.

    Here's an untested implementation that might get you closer.

    public class TestApp extends Application {
    
        private WeakReference mActivity = null;
    
        @Override
        public void onCreate() {
            super.onCreate();
            registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
                @Override
                public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                    mActivity = new WeakReference(activity);
                }
    
                @Override
                public void onActivityDestroyed(Activity activity) {
                    mActivity.clear();
                }
    
                /** Unused implementation **/
                @Override
                public void onActivityStarted(Activity activity) {}
    
                @Override
                public void onActivityResumed(Activity activity) {}
                @Override
                public void onActivityPaused(Activity activity) {}
    
                @Override
                public void onActivityStopped(Activity activity) {}
    
                @Override
                public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
            });
        }
    
        public Activity getCurrentActivity() {
            return mActivity.get();
        }
    
    }
    

    Then to use this throughout your app you would do some call like this ...

    Activity activity = ((TestApp)getApplicationContext()).getCurrentActivity(); 
    

    The advantages are you can always keep track of your current activity, however its a little too overkill for just handling Dialogs from within the Activity.

提交回复
热议问题