当Android对话框被关闭时,你能触发一个事件吗?
假设我在Android应用程序中创建了一个对话框,如下所示:当Android对话框被关闭时,你能触发一个事件吗?,android,class,static,dialog,progressdialog,Android,Class,Static,Dialog,Progressdialog,假设我在Android应用程序中创建了一个对话框,如下所示: private static ProgressDialog dialog; dialog = ProgressDialog.show(MainActivity.this, "", "Downloading Files. Please wait...", true); 现在,调用以下命令时是否可以触发事件 dialog.dismiss(); 我之所以要这样做,而不仅仅是在dialog.discouse()之后调用我的方法是因为在静态
private static ProgressDialog dialog;
dialog = ProgressDialog.show(MainActivity.this, "", "Downloading Files. Please wait...", true);
现在,调用以下命令时是否可以触发事件
dialog.dismiss();
我之所以要这样做,而不仅仅是在dialog.discouse()之后调用我的方法代码>是因为在静态类中调用了dismise对话框,接下来我要做的是加载一个新活动(这不能在静态类中使用意图来完成)。使用
类对话框中有一个方法
确保您可以-检查:
public void onDismiss(DialogInterface dialogInterface)
{
//Fire event
}
每当通过单击“正”按钮、“负”按钮、“NeturalButton”或通过单击对话框外部关闭对话框时,“onDismiss”总是被自动调用,因此在onDismiss()方法中执行您的操作,例如
@Override
public void onDismiss(DialogInterface dialogInterface) {
...
}
您甚至不需要调用dismise()方法。对对话框使用setOnDismissListener方法
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
if (mIsSettingsDirty)
refreshRecyclerView();
}
});
如果您在自定义对话框类中,请使用-override DISCLESH()。
我建议在super.disclose()之前插入逻辑。科特林示例:
override fun dismiss() {
Utils.hideKeyboard(mContext, window)
super.dismiss()
}
如果要隐藏句柄对话框
,可以覆盖两种方法
@Override
public void cancel() {
super.cancel();
callback();
}
@Override
public void dismiss() {
super.dismiss();
callback();
}
警告,此方法与API 11中的DialogFragments不兼容。看@Mahan你有没有找到其他方法?感谢您,如果用户单击“主页”按钮,这将不起作用-在这种情况下,我找到的解决方案是在创建对话框的活动被取消时收听。