#android #android-studio #android-alertdialog
#Android #android-studio #android-alertdialog
Вопрос:
У меня есть этот метод, который отображает AlertDialog:
public void showTestDialog() {
new AlertDialog.Builder(this)
.setMessage("Message")
.show();
}
Изначально это было намного сложнее, с заголовком, положительными и отрицательными кнопками, каждая из которых вызывала больше кода и т.д. Это настолько просто, насколько я мог это получить, и все равно получаю сбой.
Когда я вызываю это нажатием кнопки, оно работает нормально…
public void testButton(View view) {
showTestDialog();
}
Но когда я вызываю его из пункта меню, он выходит из строя через несколько секунд после отображения…
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.testDialog:
showTestDialog();
return true;
default:
return false;
}
}
В окне моей консоли / журнала это строка, которая появляется при нажатии на пункт меню:
D / OpenGLRenderer: завершите Activeanimators в 0x9fa61c80 (MenuPopupWindow $MenuDropDownListView) с дескриптором 0x92d16a80
… и тогда это единственная строка, которая появляется, когда виртуальное устройство внезапно закрывается:
Эмулятор устройства-5554 отключен, мониторинг остановлен.
Вот окно отчета о сбое:
У меня уже были самые современные драйверы для моего графического процессора (GTX 1070), но я все равно пошел дальше и переустановил с помощью новой загрузки, но без кубиков. Я занимался этим часами, но безуспешно. Что я делаю неправильно? Я очень новичок в этом. Спасибо!
Комментарии:
1. Странно! Раньше я не сталкивался с такими проблемами. Мне было интересно, каковы настройки памяти для вашего эмулятора? Не могли бы вы предоставить эмулятору достаточно памяти и хранилища, чтобы он мог работать бесперебойно? Вы пробовали запускать свой код на реальном устройстве? Там тоже происходит сбой?
2. @ReazMurshed Я не знаком с тем, как выделить ему память и хранилище. Я также еще не научился работать на реальном устройстве.
Ответ №1:
Создайте диалоговое окно со статическим контекстом, подобным new AlertDialog.Builder(mContext).setMessage("Message").show();
этому mContext, назначьте контекст в методе oncreate.
Комментарии:
1. Я попробовал ваше предложение, но я все равно получаю тот же результат.
Ответ №2:
Определите свой экземпляр AlertDialog в вашем onCreate и просто покажите диалоговое окно при нажатии кнопки меню. Вам также не понадобится дополнительный метод для отображения диалогового окна.
Комментарии:
1. Я тоже пробовал это, но получаю тот же результат. Я инициализировал оповещение в основном классе, настроил все заголовок, сообщение и кнопки в методе onCreate, а затем просто сообщил оповещению «.show ();» при нажатии на пункт меню.