Правильный способ отклонить диалог - PullRequest
4 голосов
/ 17 декабря 2009

Я пытаюсь использовать управляемый диалог.

Я заметил, что после того, как я впервые его отображаю, последующие создания на самом деле не создают новый экземпляр диалогового окна, они просто повторяют первый.

Если я хочу прекратить это и получать новый instance при каждом вызове, это правильный способ сделать это?:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case MY_DIALOG_ID:
            MyDlg dlg = new MyDlg(this);
            dlg.setOnDismissListener(new OnDismissListener() {
                public void onDismiss(DialogInterface dialog) {
                    removeDialog(MY_DIALOG_ID);
                }
            });
            return dlg;
    }
    return null;
}

Так что, я думаю, вызов removeDialog() делает свое дело, но мой обработчик onDismiss() должен вызываться при каждом закрытии диалогового окна, верно (как Dialog.cancel(), Dialog.dismiss(), нажатие клавиши назад)?

1 Ответ

3 голосов
/ 17 декабря 2009

Как вы заметили, метод onCreateDialog () вызывается только в первый раз, когда вы показываете диалог. Он отвечает за построение диалога. Правда в том, что вам не нужно «разрушать» ваш диалог, чтобы вызывать onCreateDialog каждый раз, когда вы хотите показать свой диалог. Вы можете переопределить onPrepareDialog (int, Dialog) - этот вызывается непосредственно перед отображением диалога. (он может перезапускать диалог, созданный в предыдущем вызове onCreateDialog.) «Определите этот метод, если вы хотите изменять какие-либо свойства диалога при каждом его открытии.»
Привет! * * 1002

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...