单选按钮在android中出错了

时间:2017-08-31 08:34:36

标签: android android-radiobutton

有时当我想在单选按钮中选择选项时,单选按钮有问题,我可以选择两个无线电但是有时候它是正确的默认方式它必须工作。

我的申请表中有以下两个示例:sample1 sample2

这是我的代码:

public RadioButton makeRadioButton(Context context, RadioGroup radioGroup, String text, int Id) {
    RadioButton radioButton = new RadioButton(context);
    LinearLayout.LayoutParams Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    radioButton.setBackgroundResource(R.drawable.backgroundbetweenradios);
    radioButton.setLayoutParams(Params);
    radioButton.setPadding(dpToPx(8,context) , dpToPx(8,context) , dpToPx(8,context) , dpToPx(8,context));
    radioButton.setId(Id);
    radioButton.setText(text);
    radioButton.setTextColor(Color.BLACK);
    radioGroup.addView(radioButton);

    return radioButton;
}

DynamicViews makeRadioButton:

public RadioGroup makeRadioGroup(Context context, LinearLayout linearLayout) {
    RadioGroup radioGroup = new RadioGroup(context);
    LinearLayout.LayoutParams Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    radioGroup.setLayoutParams(Params);
    radioGroup.setOrientation(LinearLayout.VERTICAL);

    CardView cardView = new CardView(context);
    cardView.setCardBackgroundColor(Color.WHITE);
    cardView.setCardElevation(8.0f);
    Params.setMargins(dpToPx(16,context) , dpToPx(16,context) , dpToPx(16,context) , dpToPx(16,context));
    cardView.setLayoutParams(Params);
    cardView.addView(radioGroup);
    linearLayout.addView(cardView);

    return radioGroup;
}

DynamicViews makeRadioGroup:

{{1}}

我的应用程序由很多单选按钮组成,这是我制作这些单选按钮的方法,有什么问题?这是一个错误吗?

2 个答案:

答案 0 :(得分:0)

onCreate()

上添加此内容
CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    rbtn1.setChecked(yesrbtn == buttonView);
                    rbtn2.setChecked(norbtn == buttonView);
                    ....

                }

            }

        };

    rbtn1.setOnCheckedChangeListener(listener);
    rbtn2.setOnCheckedChangeListener(listener);

这样做是为了确保不允许无线电按钮具有2个或更多选择

答案 1 :(得分:0)

您是否尝试过为每个单选按钮指定唯一ID?

new DynamicViews().makeRadioButton(getApplicationContext(),radioGroup,getString(R.string.Choice_Q2Mathematicsop1_2),1);
new DynamicViews().makeRadioButton(getApplicationContext(),radioGroup,getString(R.string.Choice_Q2Mathematicsop2_2),5);
new DynamicViews().makeRadioButton(getApplicationContext(),radioGroup,getString(R.string.Choice_Q2Mathematicsop3_2),2);
new DynamicViews().makeRadioButton(getApplicationContext(),radioGroup,getString(R.string.Choice_Q2Mathematicsop4_2),3);