Можете ли вы запустить событие, когда Android Dialog закрыт? - PullRequest
30 голосов
/ 01 июня 2011

Скажем, у меня в Android-приложении создан диалог, подобный следующему:

private static ProgressDialog dialog;
dialog = ProgressDialog.show(MainActivity.this, "", "Downloading Files. Please wait...", true);

Теперь можно ли вызвать событие, когда вызывается следующее?

dialog.dismiss();

Причина, по которой я хочу сделать это, а не просто вызывать мой метод после dialog.dismiss();, заключается в том, что диалоговое отклонение вызывается в статическом классе, и следующее, что я хочу сделать, - это загрузить новое действие (что нельзя сделать с помощью Intents внутристатический класс).

Ответы [ 5 ]

53 голосов
/ 01 июня 2011

Используйте OnDismissListener .

В классе есть setOnDismissListener(...) метод Dialog

5 голосов
/ 01 июня 2011

Конечно, вы можете - проверьте:

  public void onDismiss(DialogInterface dialogInterface)
  {
        //Fire event
  }
4 голосов
/ 05 мая 2013

Всякий раз, когда диалог закрывается либо нажатием PositiveButton, NegativeButton, NeturalButton, либо нажатием за пределами диалога, «onDismiss» всегда вызывается автоматически, так что делайте это внутри метода onDismiss (), например,

@Override
public void onDismiss(DialogInterface dialogInterface) {
    ...
}

Вам даже не нужно вызывать метод dismiss ().

1 голос
/ 06 мая 2019

Если вы находитесь в пользовательском диалоговом классе - переопределите dismiss ().Я рекомендую вставлять логику ДО super.dismiss ().Пример Kotlin:

override fun dismiss() {
    Utils.hideKeyboard(mContext, window)
    super.dismiss()
}
0 голосов
/ 03 июня 2018

Используйте метод setOnDismissListener для диалога.

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
    @Override
    public void onDismiss(DialogInterface dialog) {
        if (mIsSettingsDirty)
            refreshRecyclerView();
    }
});
...