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();
Ответы
Ответ 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
}
});