假设我有 2 个复选框(“checkbox1”和“checkbox2”),并且我设置:SetChecked(true) 对于“checkbox1”,设置:SetChcked(false) 对于“checkbox2”。我的目的是将它们关联起来,并在单击其中一个时在检查状态之间切换,(如果选中“checkbox1”并且我选中“checkbox2”,那么“checkbox2”将被选中,“checkbox1”将被取消选中,反之亦然)
这是我的代码:
final CheckBox ChckBoxNo = (CheckBox) promptsView.findViewById(R.id.ChkBoxNo);
final CheckBox ChckBoxYes = (CheckBox) promptsView.findViewById(R.id.ChkBoxYes);
ChckBoxNo.setChecked(true);
ChckBoxYes.setChecked(false);
ChckBoxNo.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (ChckBoxNo.isChecked()) {
ChckBoxYes.setChecked(false);
} else if (!ChckBoxNo.isChecked()) {
ChckBoxYes.setChecked(true);
}
}
});
ChckBoxYes.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (ChckBoxYes.isChecked()) {
ChckBoxNo.setChecked(false);
} else if (!ChckBoxYes.isChecked()) {
ChckBoxNo.setChecked(true);
}
}
});
//these if's allways response to "ChckBoxNo.IsChecked()" ,even if its the
// opposite and "ChckBoxYes.isChcked()"
if(ChckBoxYes.isChecked())
{do ...
}
else if (ChckBoxNo.isChecked()
{ do ...
}
当我通过可见性运行应用程序时,evreything 很好当我单击“ChckBoxYes”时,它会被选中,而“ChckboxNo”则未被选中,反之亦然,但它总是获得我在实现之前设置的默认值“OnCheckedChangeListener”(ChckBoxNo.SetChcked(true)、ChckBoxYes.SetChecked(false) ,即使其相反且“ChckBoxYes”被检查) 我应该怎么做才能解决这个问题? 谢谢 !
最佳答案
这不是解决您的问题的正确方法。幸运的是,已经有一个名为 RadioGroup 的内置组件。你可以这样做:
让您的 Activity 的 xml 文件如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioGroup
android:id="@+id/radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/radio_button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CheckBox1" />
<RadioButton
android:id="@+id/radio_button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CheckBox2" />
</RadioGroup>
</LinearLayout>
在您的 Activity 中,您可以与此组件进行交互,并在点击任何 RadioButton 时处理您想要的任何内容,如下所示:
public class MainActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radio_group);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.radio_button1) {
//First is checked
} else if (checkedId == R.id.radio_button2) {
// Second is checked
}
}
});
}
}
关于java - CheckBox 不响应选中状态 (Android Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34800495/