Да, я знаю, что есть AlertDialog.Builder, но я потрясен, узнав, насколько сложно (по крайней мере, не для программистов) отображать диалог в Android.
Раньше я был разработчиком .NET, и мне интересно, есть ли Android-эквивалент следующего?
if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){
// Do something...
}
Ответы:
AlertDialog.Builder действительно не так сложно использовать. Поначалу это немного пугает, но когда вы немного его используете, это одновременно и просто, и мощно. Я знаю, вы сказали, что знаете, как его использовать, но в любом случае вот простой пример:
Вы также можете использовать это повторно,
DialogInterface.OnClickListener
если у вас есть другие блоки да / нет, которые должны делать то же самое.Если вы создаете диалог изнутри
View.OnClickListener
, вы можете использовать егоview.getContext()
для получения контекста. В качестве альтернативы вы можете использоватьyourFragmentName.getActivity()
.источник
AlertDialog.Builder builder = new AlertDialog.Builder(getView().getContext());
Попробуй это:
источник
The constructor AlertDialog.Builder(MainActivity.DrawerItemClickListener) is undefined
Ответ Стива Н точен, но вот немного больше информации: причина, по которой диалоги работают так, как они работают, состоит в том, что диалоги в Android асинхронны (выполнение не останавливается, когда диалоговое окно отображается). Из-за этого вы должны использовать обратный вызов для обработки выбора пользователя.
Проверьте этот вопрос для более подробного обсуждения различий в Android и .NET (в том, что касается диалогов): Dialogs / AlertDialogs: как «заблокировать выполнение», когда диалог открыт (стиль .NET)
источник
Это работает для меня:
источник
Спрашивая человека, хочет ли он позвонить или нет Диалог ..
источник
Ответ Стивса правильный, хотя и устаревший с фрагментами. Вот пример с FragmentDialog.
Класс:
Чтобы начать диалог:
Вы также можете позволить классу реализовать
onClickListener
и использовать это вместо встроенных слушателей.источник
Спасибо, Никки, твой ответ помог мне улучшить существующее, просто добавив желаемое действие следующим образом.
источник
В Котлине:
источник
Показать диалог анонимно в виде цепочки команд и без определения другого объекта:
источник
Все ответы здесь сводятся к длинному и не удобному для читателя коду: то, чего пытался избежать человек, спрашивающий. Для меня самый простой подход - использовать здесь лямбды:
Для Lambdas в Android требуется плагин retrolambda ( https://github.com/evant/gradle-retrolambda ), но в любом случае он чрезвычайно полезен при написании более чистого кода.
источник
Спасибо. Я использую API Level 2 (Android 1.1), а вместо
BUTTON_POSITIVE
иBUTTON_NEGATIVE
я должен использоватьBUTTON1
иBUTTON2
.источник
1. Создать AlertDialog установить сообщение, заголовок и положительный, отрицательный кнопку:
2. Теперь найдите обе кнопки на DialogInterface. Нажмите затем setOnClickListener ():
3.Показать Alertdialog:
Примечание: не забывайте Final Keyword с AlertDialog.
источник
источник
Вы можете реализовать общее решение для принятия решений и использовать его в другом случае, а не только для ответа «да / нет» и настраивать оповещение с анимацией или макетом:
Что-то вроде этого; Сначала создайте свой класс для передачи данных:
после интерфейса для возврата результата
Теперь вы можете легко создавать утилиты для доступа (в этом классе вы можете реализовать другую анимацию или собственный макет для оповещения):
и последний вызов в деятельности или фрагмент; Вы можете использовать это в вашем случае или для другой задачи:
источник
Вы можете сделать это так просто в Kotlin:
источник
Для Котлина в Android ::
источник
Реализация котлина.
Вы можете создать простую функцию, подобную этой:
и назовите это так:
источник