2012-05-23 37 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來顯示,直到我給了指針上下文和資源打包。

祝你好運!