AlertDialog setOnDismissListener不起作用

我的活动打开一个对话框。 当它closures时,我需要执行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(); 

Solutions Collecting From Web of "AlertDialog setOnDismissListener不起作用"

 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(); ..... } } 

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

 AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( this); alertDialogBuilder.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { dialogmenu = false; } }) 

好的…我自己想清楚了。

我不得不实现DialogInterface.OnCancelListener并添加onCancel方法。 有效!

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

我发现了真正的问题。

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

尝试一下 :)