Как установить элементы с одним выбором внутри AlertDialog? - PullRequest
28 голосов
/ 22 октября 2011

Мне не удалось установить список с одним выбором или список с несколькими вариантами внутри AlertDialog.

Я пытался следовать примерам, но у меня появляется только диалог с заголовком, ОК и Отменакнопки, и нет списка, и сообщения НЕТ (которое я установил!).

Вот код:

    protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DIALOG_DELETE_CITY:
        CharSequence[] array = {"Red", "Blue", "Yellow"}; 
        return new AlertDialog.Builder(ShowPypData.this)
            .setTitle(R.string.city_actions_delete_label)
            .setMessage(R.string.city_actions_delete_select_label)
            .setSingleChoiceItems(array, -1, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub

                    }
                })
            .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub

                }

            })
            .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();

                }
            }).create();
    default:
        return null;
    }

}

Странная вещь в том, что если я комментирую часть setSingleChoiceItems, я могусм. сообщение в диалоговом окне.

Ответы [ 2 ]

41 голосов
/ 22 октября 2011

Кажется, что Buttons, Message и Multiple choice items являются взаимоисключающими.Попробуйте закомментировать setMessage(), setPositiveButton() и setNegativeButton().Сам не проверял.

5 голосов
/ 30 октября 2017

у меня этот код работает

 final CharSequence[] charSequence = new CharSequence[] {"As Guest","I have account here"};

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Buy Now")
                //.setMessage("You can buy our products without registration too. Enjoy the shopping")
                .setSingleChoiceItems(charSequence, 0, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        utility.toast(" "+charSequence);
                    }
                })
        .setPositiveButton("Go", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        builder.create().show()
...