17

我的活动打开一个对话框。当它关闭时,我需要ReloadTable()执行该功能。所以我正在尝试使用setOnDismissListener但它没有被触发。有人可以帮助我做错什么吗?

谢谢!

AlertDialog.Builder builder;
AlertDialog alertDialog;
Context mContext = getApplicationContext();
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.transaction, null);
builder = new AlertDialog.Builder(new ContextThemeWrapper(TransactionsList.this , R.style.dialogwithoutdim));
builder.setView(layout);
alertDialog = builder.create();
alertDialog.setOnDismissListener(new OnDismissListener() {
    public void onDismiss(final DialogInterface dialog) {
        ReloadTable();
    }
});

builder.show();
4

6 回答 6

13
public class MyActivity extends Activity implements DialogInterface.OnCancelListener{
    @Override
    public void onCreate(Bundle state) {
       .....
       alertDialog.setOnCancelListener(this);
       alertDialog.show();
    }
    @Override
    public void onCancel(DialogInterface dialog) {
        dialog.dismiss();
        .....
    }
}
于 2014-02-22T13:15:17.340 回答
9

您必须将 OnCancelListener 设置为 AlertDialog.Builder:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                this);
alertDialogBuilder.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                dialogmenu = false;
            }
        })
于 2015-12-23T12:01:20.903 回答
4

好的...我自己想通了。

我必须实现DialogInterface.OnCancelListener并添加该onCancel()方法。有效!

于 2012-09-22T22:23:32.073 回答
3

在这种情况下,您应该使用alertDialog.setOnCancelListener(listener), 并alertDialog.setOnDismissListenerdismissDialog(id).

于 2012-09-21T07:06:48.990 回答
3

使用以下代码

final AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
                final View dailogView = LayoutInflater.from(MyActivity.this).inflate(R.layout.dialog_layout, null);
                builder.setView(dailogView);
                final AlertDialog dialog=builder.create();
                dialog.show();

解雇监听器

 dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(DialogInterface dialogInterface) {
                   // your code after dissmiss dialog     
                    }
                });
于 2019-08-08T05:28:19.847 回答
2

我发现了真正的问题。

您应该在对话框中调用 .show,而不是在构建器中。

试试看 :)

于 2015-11-17T17:20:24.500 回答