2012-05-23 191 views
29

我创建了一个AlertDialogAlertDialog.Builder并设置了一些项目setItems()。显示对话框,但我看不到任何项目。我看到的只是信息。AlertDialog的项目不显示

final CharSequence[] items = {"Red", "Green", "Blue"}; 

AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity); 
dialogBuilder.setMessage("Pick a color"); 
dialogBuilder.setItems(items, new DialogInterface.OnClickListener() {   
    public void onClick(DialogInterface dialog, int which) { 
     // Do anything you want here 
    }  
}); 

dialogBuilder.create().show(); 

如果我设置PositiveButton,我可以看到那个按钮就好了。我也尝试设置MultiChoiceItemsSingleChoiceItems,但这两者都无效。

+5

尝试使用'setTitle'代替'setMessage'。我认为构建器正在创建一个通常的消息对话框。 – Knickedi

+0

哦,是的,没有注意到.. 它的工作原理,谢谢! 如何将此帖标记为“已回答”? –

回答

117

使用setTitle而不是setMessage设置邮件正文并覆盖项目列表。

+2

在使用列表项和警报对话框时很难发现这一点。 – Zoombie

+0

这应该在文档中说明。谢谢,你的回答挽救了我的一天 – Armando

+0

一个人怎么能兼得?项目和消息? – Pierre

0

使用下面的代码: -

final CharSequence[] items = {"Red", "Green", "Blue"}; 
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity); 
dialogBuilder.setTitle("Pick a color"); 
dialogBuilder.setItems(items, new DialogInterface.OnClickListener() { 

    public void onClick(DialogInterface dialog, int which) { 
     // Do anything you want here 
    } 

}); 
dialogBuilder.create().show(); 
0

试试这个

final CharSequence[] items = {"Red", "Green", "Blue"}; 
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity); 
dialogBuilder.setTitle("Pick a color"); 
dialogBuilder.setSingleChoiceItems(items,-1, new DialogInterface.OnClickListener() 
@Override 
public void onClick(DialogInterface dialog, int which) 
{ 
} 
}); 
dialogBuilder.show(); 
+0

'setSingleChoiceItems'基本上与'setItems'相同:它仍然是'setMessage'的独有。唯一的区别是如果你正在执行一个持久性选择,单选按钮显示为“单选”。 – TWiStErRob

2

你为什么不出去setTitle而不是setMessage?试用setTitle("Pick a color")

我希望它能帮助你。

0

尝试alertDialogBuilder.setCustomTitle(view)

0

如果您正在使用的资源字符串数组必须包括资源的包装。 context()。getResources()。getStringArray(R.array.items);

我的列表并没有通过使用R.array.items来显示,直到我给了指针上下文和资源打包。

祝你好运!