如何在AlertDialog中设置单选项?

Jul*_*rez 28 android android-alertdialog

我无法在AlertDialog中设置Single Choice列表或Multiple Choice List.

我试着按照这些例子,但我只得到一个带有标题的对话框,确认和取消按钮,没有列表,没有消息(我设置了!).

这是代码:

    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;
    }

}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我评论setSingleChoiceItems部分,我可以在对话框中看到该消息.

小智 41

似乎是Buttons,Message并且Multiple choice items是相互排斥的.尝试发表评论setMessage(),setPositiveButton()并且setNegativeButton().没自己检查一下.

  • 你是完全正确的,setMessage,setSingleChoiceItems和setMultiChoiceItems都是互斥的.相反,按钮可用于各种AlertDialog.所以谢谢! (7认同)
  • 来自 http://developer.android.com/guide/topics/ui/dialogs.html “因为列表出现在对话框的内容区域,对话框不能同时显示消息和列表,您应该为对话框设置标题使用 setTitle()。” (2认同)

Sai*_*i N 5

该代码对我有用

 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()
Run Code Online (Sandbox Code Playgroud)