#android #dialog #alert
#Android #диалоговое окно #предупреждение
Вопрос:
Привет всем, я создаю диалоговое окно предупреждения в Android, нажав кнопку. Я использовал свойство onClick для XML и вызывающей функции. Мой код
public void selectPhoneType(View view)
{
String [] item = {"Home", "Work", "Mobile", "Work Fax", "Home Fax", "Pager", "Other", "Custom"};
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
builder.setTitle("Select Label");
AlertDialog alert = builder.create();
alert.show();}
но этот код не отображает предупреждение и выдает ошибку типа
BadTokenException: Unable to add window -- token null is not for an application.
Пожалуйста, скажите мне, что не так с этим кодом.
Комментарии:
1. попробуйте: создать AlertDialog. Конструктор (это)
2. привет, спасибо за его работу, но не могли бы вы объяснить мне, в чем разница между этим и getAplicationContext?
Ответ №1:
new AlertDialog.Builder(getApplicationContext());
Я думаю, что это проблема. Вы пробовали:
new AlertDialog.Builder(YourActivityClassName.this);
Комментарии:
1. да, я не пробовал это, но после выполнения этого он работает. Как? Пожалуйста, объясните мне.
2. Вы добавляли контекст всего приложения, а не конкретное действие, которое вы хотели показать в диалоговом окне. В нижней части этого сообщения в блоге есть немного больше объяснений. tech.shantanugoel.com/2010/07/08 /…
3. Нет проблем. Рад быть полезным
4. Хотелось бы, чтобы была другая кнопка для галочки, чтобы я мог ее использовать. Одно из лучших решений. 🙂
Ответ №2:
Передача requireActivity()
вместо requireContext()
сработала для меня ..!! Я думаю, что для этого требуется контекст активности !!.
Ответ №3:
Если вы вызываете диалоговый код в фоновом потоке, он не будет работать. Вы должны вызвать связанный с пользовательским интерфейсом код в основном потоке, если вы этого не делаете, он не покажет вам диалоговое окно.
-
Если вы хотите отобразить диалоговое окно в фоновой задаче, вместо этого используйте обработчик.
новый обработчик().post(новый запускаемый (){ ShowDialog(); })
-
Убедитесь
create()
, что иshow()
метод вызывается. -
Никогда не забывал 1-й и 2-й пункт.