Ответ 1
Используйте OnDismissListener.
Существует метод setOnDismissListener(...)
в классе Dialog
Скажем, у меня есть созданный диалог в Android-приложении, например:
private static ProgressDialog dialog;
dialog = ProgressDialog.show(MainActivity.this, "", "Downloading Files. Please wait...", true);
Теперь, возможно ли запустить событие, когда вызывается следующее?
dialog.dismiss();
Причина, по которой я хочу это сделать, а не просто вызвать мой метод после dialog.dismiss();
, заключается в том, что отклонение Dialog вызывается в статическом классе, а следующее, что я хочу сделать, это загрузить новое действие (которое невозможно сделать с помощью Задания внутри статического класса).
Используйте OnDismissListener.
Существует метод setOnDismissListener(...)
в классе Dialog
Конечно, вы можете проверить:
public void onDismiss(DialogInterface dialogInterface)
{
//Fire event
}
Всякий раз, когда диалог закрывается либо нажатием PositiveButton, NegativeButton, NeturalButton, либо нажатием вне диалога, "onDismiss" всегда вызывается автоматически, так что делайте свои вещи внутри метода onDismiss(), например,
@Override
public void onDismiss(DialogInterface dialogInterface) {
...
}
Вам даже не нужно вызывать метод reject().
Используйте метод setOnDismissListener для диалога.
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
if (mIsSettingsDirty)
refreshRecyclerView();
}
});
Если вы находитесь в пользовательском диалоговом классе - переопределите dismiss(). Я рекомендую вставлять логику ДО super.dismiss(). Пример Kotlin:
override fun dismiss() {
Utils.hideKeyboard(mContext, window)
super.dismiss()
}