0

我正在尝试将复选框添加到警报对话框屏幕。我正在使用自定义 xml 布局来膨胀警报对话框。下面是代码。警报对话框即将出现(在我的主要活动中单击按钮),其中包含我在 xml 中定义的所有元素。但我没有看到将复选框添加到对话框视图中。任何人都可以在这里提出建议。

    LayoutInflater factory = LayoutInflater.from(this);
    final View uploadScreenView = factory.inflate(R.layout.uploadscreen, null);
    alert = new AlertDialog.Builder(this); 
    alert.setTitle(this.getString(R.string.AlertDialog_Message_ConfirmUpload));
    alert.setView(uploadScreenView);
    String[] itemNames = getResources().getStringArray(R.array.categories_array);  
    CheckBox[] cbs = new CheckBox[itemNames.length]; 
    for (int i = 0; i < itemNames.length; i++) {
        //cb.add(new CheckBox(uploadQuizView.getContext()));
        cbs[i] = new CheckBox(uploadScreenView.getContext());
        cbs[i].setText(itemNames[i]);
    }
    //....alert.setpositive/negative button , show code here
4

2 回答 2

0

更新了下面的工作代码。我将uploadScreenView 从View 更改为ViewGroup。没有任何父级(定义布局或视图组)的视图不能添加子级

 LayoutInflater factory = LayoutInflater.from(this);
final ViewGroup uploadScreenView = factory.inflate(R.layout.uploadscreen, null);
alert = new AlertDialog.Builder(this); 
alert.setTitle(this.getString(R.string.AlertDialog_Message_ConfirmUpload));
alert.setView(uploadScreenView);
String[] itemNames = getResources().getStringArray(R.array.categories_array);  
CheckBox[] cbs = new CheckBox[itemNames.length]; 
for (int i = 0; i < itemNames.length; i++) {
           cbs[i] = new CheckBox(uploadScreenView.getContext());
    cbs[i].setText(itemNames[i]);
     uploadScreenView .addView(cbs[i]);
}
//....alert.setpositive/negative button , show code here
于 2013-06-11T15:34:31.550 回答
0

您没有将复选框“绑定”到您的视图,因此它们不会显示。

你应该做的是这样的事情:

 CheckBox[] cbs = new CheckBox[itemNames.length]; 
 for (int i = 0; i < itemNames.length; i++) 
 {
        cbs[i] = new CheckBox(uploadScreenView.getContext());
        cbs[i].setText(itemNames[i]);
        uploadScreenView.addView(cbs[i]);
 }

这段代码的关键是addView方法。您可以查看它的文档和这个问题

于 2013-06-11T08:16:44.520 回答