У меня есть 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, и это то, что я использую.