Как отобразить диалоговое окно Yes/No на Android?

Да, я знаю, что существует AlertDialog. Разработчик, но я потрясен знать как трудный (хорошо, по крайней мере, не благоприятный для программиста) отображать диалоговое окно в Android.

Я раньше был разработчиком.NET, и я задаюсь вопросом, там кто-либо эквивалентный Android из следующего?

if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){
    // Do something...
}
344
задан Peter Mortensen 17 May 2016 в 11:24
поделиться

2 ответа

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().

718
ответ дан 23 November 2019 в 00:31
поделиться

Ответ Стива Х точен, но вот еще немного информации: причина, по которой диалоги работают так, как они работают, заключается в том, что диалоги в Android асинхронны (выполнение не останавливается, когда диалог отображается). Поэтому для обработки выбора пользователя необходимо использовать обратный вызов.

Посмотрите этот вопрос для более подробного обсуждения различий между Android и .NET (в том, что касается диалогов): Диалоги / AlertDialogs: How to "block execution" while dialog is up (.NET-style)

32
ответ дан 23 November 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: