Как стать автором
Обновить

Создаем свой dialog в Android (подвох в официальной документации)

Время на прочтение1 мин
Количество просмотров615
Решил создасть свой Dialog в andriod. Знания получал из официальной документации. Но, как оказалось здесь есть подвох. Если следовать рекомендациям из документации Creating a Custom Dialog, то всегда получаю ошибку:

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

ошибку вызывает метод:

@Override
protected Dialog onCreateDialog(int id) {
Context mContext = getApplicationContext();
Dialog dialog = new Dialog(mContext);

dialog.setContentView(R.layout.quicklog);
dialog.setTitle("Custom Dialog");
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Hello, this is a custom dialog!");

return dialog;
}


Причина в том, что конструктору объекта Dialog передается не правильный контекст:

Context mContext = getApplicationContext();
Dialog dialog = new Dialog(mContext);


Фиксится достаточно легко. Меняем getApplicationContext() на this:

Dialog dialog = new Dialog(this);


Думаю данную неточность исправят в документации позже, но будьте внимательны.
Теги:
Хабы:
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн