web-dev-qa-db-ja.com

AlertDialogsetOnDismissListenerが機能していません

私のアクティビティはダイアログを開きます。それが閉じるとき、私は関数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();
11
lumpawire
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();
        .....
    }
}
10
Zeev G

AlertDialog.BuilderにOnCancelListenerを設定する必要があります。

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

OK ...私はそれを自分で理解しました。

_DialogInterface.OnCancelListener_を実装し、onCancel()メソッドを追加する必要がありました。機能した!

2
lumpawire

この場合、alertDialog.setOnCancelListener(listener)を使用する必要があり、_alertDialog.setOnDismissListener_はdismissDialog(id)で機能します。

2
Yahor10

私は本当の問題を見つけました。

ビルダーではなく、ダイアログで.showを呼び出す必要があります。

それを試してみてください :)

1
RogerParis

次のコードを使用

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

DismissListener

 dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(DialogInterface dialogInterface) {
                   // your code after dissmiss dialog     
                    }
                });
1