0

以前はRadioGroup、動的に作成されたラジオボタンから選択する項目を 1 つだけ実装していました。

    final LinearLayout firstRowTxtLayout = new LinearLayout(fContext);
    firstRowTxtLayout.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));

    rbGroup.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));
    rbButton = new RadioButton(fContext);
    rbButton.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));
    rbButton.setId(rbTagincreament);
    rbGroup.addView(rbButton);

そしてRadioGroup、ループの外で初期化しました。RadioGroupビューを別のレイアウトに追加しました

再度変更しました(下図)。これでラジオ ボタンを取得できましたが、グループ内のすべてのボタンを選択できます。

            private void createRadioButton(int num) {
    Log.i("comVisa", "Num ==" + num);

    rg = new RadioGroup(fContext); // create the RadioGroup
    rg.setOrientation(RadioGroup.HORIZONTAL);// or RadioGroup.VERTICAL

    rb = new RadioButton(fContext);
    rb.setId(num++);
    rg.addView(rb); // the RadioButtons are added to the radioGroup instead
    // of the layout
    firstRowTxtLayout.addView(rg);// you add the whole RadioGroup to the
    // layout
    rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {


        }
    });

}

rg = new RadioGroup(fContext);外部を初期化すると、次のようになります。

`IllegalStateException`. You must call removeView() on the child's parent first while using RadioGroup

コード行を含む Logcat:

03-12 14:05:35.266: W/System.err(32734):    at com.vipera.ts.gui.custom.comVisaApprovalList.createRadioButton(comVisaApprovalList.java:531) firstRowTxtLayout.addView(rg);
03-12 14:05:35.266: W/System.err(32734):    at com.vipera.ts.gui.custom.comVisaApprovalList.constructRow(comVisaApprovalList.java:459)createRadioButton(rbTagincreament++);
03-12 14:05:35.271: W/System.err(32734):    at com.vipera.ts.gui.custom.comVisaApprovalList.createTableLayout(comVisaApprovalList.java:411)
03-12 14:05:35.271: W/System.err(32734):    at com.vipera.ts.gui.custom.comVisaApprovalList.init(comVisaApprovalList.java:121)
4

1 に答える 1

1

rbButtonは現在別のビューにあるため、例外が発生します。に追加する前に呼び出す 必要があります。parent_of_rbButton.removeView(rbButton)rbGroup

于 2013-03-11T18:04:08.550 に答える