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 に答える