如何使AlertDialog在进入其他活动后仍然存在?

时间:2018-10-09 01:05:01

标签: android alertdialog

任何用户由于会话过期而在退出我的应用程序后打开它。我有两个同时运行的进程,一个是从Splashscreen到MainActivity的意图,第二个是在BAseActivity中调用的AlertDialog。因此,假设我的AlertDialog当前在“启动画面”上可见,并且某些进程正在后台运行,当它完成时,意图将应用程序带到MainActivity。

问题是我的AlertDialog被取消了。有什么办法可以在所有活动中持久保存AlertDialog?

2 个答案:

答案 0 :(得分:0)

不。您只能在Intent中为MainActivity或在SharedPreferences中设置一个值,以告诉MainActivity再次显示该对话框。

Android中的对话框附加到活动。它们显示在该活动的窗口中。一旦该窗口被销毁(即该活动完成时),或者将该窗口置于后台,该对话框将不再显示。

答案 1 :(得分:0)

这是上下文问题,因为对话框使用相同的活动上下文,如果此对话框必须始终位于顶部,则可以使用SYSTEM_ALERT_SERVICE来完成

public void showCustomAlert(String text){

    final String alertText = text;

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            AlertDialog.Builder myDialogBox = new AlertDialog.Builder(mContext);
            myDialogBox.setTitle("Alert");
            myDialogBox.setMessage(alertText);
            myDialogBox.setCancelable(false);
            myDialogBox.setPositiveButton("OK", new DialogInterface.OnClickListener(){

                  public void onClick(DialogInterface dialog, int whichButton) {
                         dialog.dismiss();
                  }

            });
            myDialogBox.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
            {
                  public void onClick(DialogInterface dialog, int which) {
                         dialog.dismiss();
                  }
            });
            AlertDialog alertDialog = myDialogBox.create();
                  alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
            alertDialog.show();
       }
    });
    }

注意"android.permission.SYSTEM_ALERT_WINDOW"权限。希望这能解决您的问题。