当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()之后调用我的方法是因为在静态

假设我在Android应用程序中创建了一个对话框,如下所示:

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你有没有找到其他方法?感谢您,如果用户单击“主页”按钮,这将不起作用-在这种情况下,我找到的解决方案是在创建对话框的活动被取消时收听。