How to set radio button checked as default in radiogroup?

前端 未结 8 1583
孤城傲影
孤城傲影 2020-12-23 09:01

I have created RadioGroup and RadioButton dynamically as following:

RadioGroup radioGroup = new RadioGroup(context);
                      


        
8条回答
  •  不知归路
    2020-12-23 09:09

    It's a bug of RadioGroup

    RadioButton radioBtn2 = new RadioButton(context);
    

    radioBtn2 without viewId, and generateViewId is in onChildViewAdded()

    public void onChildViewAdded(View parent, View child) {
        if (parent == RadioGroup.this && child instanceof RadioButton) {
            int id = child.getId();
            // generates an id if it's missing
            if (id == View.NO_ID) {
                id = View.generateViewId();
                child.setId(id);
            }
            ((RadioButton) child).setOnCheckedChangeWidgetListener(
                    mChildOnCheckedChangeListener);
        }
    
        if (mOnHierarchyChangeListener != null) {
            mOnHierarchyChangeListener.onChildViewAdded(parent, child);
        }
    }
    

    so, first radioGroup.addView(radioBtn2), then radioBtn2.setChecked(true);

    Like this:

    RadioGroup radioGroup = new RadioGroup(context);
    RadioButton radioBtn1 = new RadioButton(context);
    RadioButton radioBtn2 = new RadioButton(context);
    RadioButton radioBtn3 = new RadioButton(context);
    
    radioBtn1.setText("Less");
    radioBtn2.setText("Normal");
    radioBtn3.setText("More");
    
    radioGroup.addView(radioBtn1);
    radioGroup.addView(radioBtn2);
    radioGroup.addView(radioBtn3);
    
    radioBtn2.setChecked(true);
    

提交回复
热议问题