Как сделать так, чтобы AlertDialog сохранялся даже после перехода к другой активности? - PullRequest
0 голосов
/ 09 октября 2018

Всякий раз, когда какой-либо пользователь открывает мое приложение после того, как оно вышло из системы из-за истечения сеанса.У меня одновременно запущены два процесса, один - намерение MainActivity сформировать на Splashscreen, а второй - AlertDialog, который вызывается в BAseActivity.Итак, предположим, что мой AlertDialog в настоящее время виден на Splashscreen, и некоторый процесс идет в фоновом режиме, и когда он завершает работу, приложение переводит приложение в MainActivity.

Проблема в том, что мой AlertDialog отменяется.Есть ли способ сохранить AlertDialog через все действия?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Это проблема контекста, потому что диалог использует один и тот же контекст активности. Если этот диалог всегда должен быть сверху, это можно сделать с помощью 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" разрешение.Надеюсь, что это решит вашу проблему.

0 голосов
/ 09 октября 2018

Нет.Вы можете только установить значение, либо в Intent to MainActivity, либо в качестве значения в SharedPreferences, чтобы сообщить MainActivity о повторном отображении этого диалога.

Диалоги в Android присоединены к Activity.Они отображаются в окне этой деятельности.Как только это окно будет уничтожено (т.е. когда это действие завершится) или когда окно будет помещено в фон, этот диалог больше не будет отображаться.

...