AlertDialog не удается ... иногда - PullRequest
1 голос
/ 15 июня 2011

У меня есть ListActivity, содержащее элементы, содержащие текст и кнопку.Когда кнопка нажата, мне может потребоваться отобразить AlertDialog, чтобы спросить пользователя, уверен ли он, что хочет выполнить действие.Итак, вот упражнение onCreateDialog:

@Override
protected Dialog onCreateDialog(int id)
    {
    switch (id)
        {
        case CONFIRM_DELETE_DLG:
            {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage(getString(R.string.remove_confirmation))
                   .setCancelable(false)
                   .setPositiveButton(R.string.caption_yes, this)
                   .setNegativeButton(R.string.caption_no, this);
            return builder.create();
            }
        default:
            break;
        }
    return null;
    }

(есть только один тип диалога, поэтому эта функция избыточна, но она работает.)

Когда кнопка в диалоге нажата, мойВызывается функция onClick (диалог DialogInterface, int которого).Он делает то, что нужно для обработки операции удаления, затем вызывает dismissDialog (CONFIRM_DELETE_DLG).

Наконец, в onDestroy () моей деятельности я вызываю removeDialog (CONFIRM_DELETE_DLG) в блоке try / catch, который позволяет мнеигнорируйте ситуацию, когда диалог никогда не создавался.

ПРОБЛЕМА:

Обычно, когда я в первый раз вызываю диалог, он работает.Каждый раз, когда я вхожу в этот ListActivity и запускаю это диалоговое окно, я получаю следующее при вызове builder.create ():

Attempted to add application window with unknown token

Единственное обсуждение, которое я видел в Интернете, связано с контекстом, переданным вAlertDialog.Builder ().Каждый предположительно работающий пример, который я видел, использует член this в качестве параметра параметра Activity, и это то, что я использую.

...