Да, я знаю, что существует AlertDialog. Разработчик, но я потрясен знать как трудный (хорошо, по крайней мере, не благоприятный для программиста) отображать диалоговое окно в Android.
Я раньше был разработчиком.NET, и я задаюсь вопросом, там кто-либо эквивалентный Android из следующего?
if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){
// Do something...
}
AlertDialog.Builder на самом деле не так уж сложен в использовании. Поначалу он немного пугает, но как только вы немного освоите его, он станет одновременно простым и мощным. Я знаю, что вы уже сказали, что знаете, как им пользоваться, но вот простой пример:
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
//Yes button clicked
break;
case DialogInterface.BUTTON_NEGATIVE:
//No button clicked
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
Вы также можете повторно использовать DialogInterface.OnClickListener
, если у вас есть другие да/нет поля, которые должны делать то же самое.
Если вы создаете диалог внутри View.OnClickListener
, вы можете использовать view.getContext()
для получения контекста. В качестве альтернативы можно использовать yourFragmentName.getActivity()
.
Ответ Стива Х точен, но вот еще немного информации: причина, по которой диалоги работают так, как они работают, заключается в том, что диалоги в Android асинхронны (выполнение не останавливается, когда диалог отображается). Поэтому для обработки выбора пользователя необходимо использовать обратный вызов.
Посмотрите этот вопрос для более подробного обсуждения различий между Android и .NET (в том, что касается диалогов): Диалоги / AlertDialogs: How to "block execution" while dialog is up (.NET-style)