Подтвердить что ты не робот

AlertDialog setOnDismissListener не работает

Моя активность открывает диалог. Когда он закрывается, мне нужно выполнить функцию 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();
4b9b3361

Ответ 1

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

Ответ 2

Вы должны установитьOnCancelListener в AlertDialog.Builder:

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

Ответ 3

В этом случае вы должны использовать alertDialog.setOnCancelListener(listener), а alertDialog.setOnDismissListener работает с dismissDialog(id).

Ответ 4

ОК... Я сам разобрался.

Мне пришлось реализовать DialogInterface.OnCancelListener и добавить метод onCancel(). Это сработало!

Ответ 5

Я нашел реальную проблему.

Вы должны вызывать .show в диалоговом окне, а не в компоновщике.

Попробуйте:)

Ответ 6

Используйте следующий код

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