无法取消选中动态广播组中已检查的单选按钮

sam*_*ria 5 android unchecked radio-button

如果我第一次设置一个单选按钮,它可以正常工作.但如果我通过调用.setChecked(false)取消选择它; 然后,即使我试图通过调用setChecked(true)来选择它也不会取消选择前一个.

    private void radiotype() {
    count = //changed every time.
    LinearLayout llques = (LinearLayout) mview.findViewById(R.id.llrbgRBD);
    RadioGroup group = new RadioGroup(context);
    group.setOrientation(RadioGroup.VERTICAL);
    final RadioButton[] rb = new RadioButton[count];
    List<String[]> ans = getAnswerList.getAns();

    for (int j = 0; j < count; j++) {

        rb[j] = new RadioButton(context);
        rb[j].setVisibility(View.VISIBLE);
        rb[j].setText("`enter code here`hi");
        String a = rb[j].getText().toString();`enter code here`
        Log.e("getAnswerList===a", "getAnswerList===>a" + a);
        Log.e("getAnswerList", "getAnswerList===>" + ans.get(index)[0]);
        if (a.equalsIgnoreCase(ans.get(index)[0])) {
            rb[j].setChecked(true);
        }
        rb[j].setTextColor(Color.BLACK);
        rb[j].setButtonDrawable(R.drawable.custom_radio_button);
        group.addView(rb[j]);
    }
    llques.removeAllViews();
    llques.addView(group);
    group.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // checkedId is the RadioButton selected
            //int c = count;
            for(int i=0;i<count;i++){
                rb[i].setChecked(false);
            }
            //
            Log.v("id",""+checkedId);
            for (int i = 0; i < count; i++) {
                if (rb[i].getId() == checkedId){
                    rb[i].setChecked(true);
                } 
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

Spe*_*edy 5

我知道这已经很老了,但我遇到了同样的问题。解决办法是通过addView()改变添加RadioButton 的状态RadioGroup。我想这也是 BAKUS 试图通过他的示例代码所说的。


Har*_*ran 0

在您的 xml 中使用它。

<RadioGroup
                android:id="@+id/status_group"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:orientation="vertical"
                 android:layout_margin="5dp"
                 >
             <RadioButton
                 android:id="@+id/open_radio"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="Open"
                 />
            <RadioButton
                android:id="@+id/close_radio"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="Closed"
                 />
            <RadioButton
                android:id="@+id/all_radio"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="Both"
                 />

            </RadioGroup>
Run Code Online (Sandbox Code Playgroud)

然后在java中:

 final RadioGroup status_group = (RadioGroup) findViewById(R.id.status_group);

        //--    By default if you want open button to be checked, you can do that by using
            status_group.check(R.id.open_radio);

            status_group.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) { 


                    RadioButton radioButton = (RadioButton) findViewById(checkedId);
                    status_group.check(checkedId);

                    radio_status = radioButton.getText().toString().trim();
                    Log.v("radio_text--", radio_status);
                }
            });
Run Code Online (Sandbox Code Playgroud)