我的活动中有四个复选框,
[全部,选项1,选项2,选项3]。
我的预期功能是,在加载活动时选择全部作为默认值,如果您选择任何其他选项,将取消选中[全部],如果您选择了任何其他选项,则再次选择[全部],然后取消选中其他选项。
我有这种工作,All被选为默认值,但是当我选择其中一个选项时;根据需要取消选中所有内容,但在我再次按下该复选框之前,选中的复选框不会被选中。
同样如果我选中了选项2和3,并且我选择了全部:未选中选项2和3但是直到我再次按下它才会检查。
这是我的onCreateMethod
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_selection);
all = (CheckBox) findViewById(R.id.All);
option1 = (CheckBox) findViewById(R.id.option1);
option2 = (CheckBox) findViewById(R.id.option2);
option3 = (CheckBox) findViewById(R.id.option3);
IfAllChecked();
optionOneSelectedUnCheckedAll();
optionTwoSelectedUnCheckedAll();
optionThreeSelectedUnCheckedAll();
}
这是我选择All时的代码:
private void IfAllChecked() {
all.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (option1.isChecked()) {
option1.setChecked(false);
}
if (option2.isChecked()) {
option2.setChecked(false);
}
if (option3.isChecked()) {
option3.setChecked(false);
}
}
}
);
}
检查其中一个选项时的代码
private void optionOneSelectedUnCheckedAll() {
option2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (all.isChecked()) {
all.setChecked(false);
}
}
}
);
}
这是我的布局,我在这里设置All为真。
<LinearLayout
android:id="@+id/UnitName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/All"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="All"
android:checked="true" />
<CheckBox
android:id="@+id/option1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dun L"/>
<CheckBox
android:id="@+id/option2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Blackrock" />
<CheckBox
android:id="@+id/option3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dundrum" />
</LinearLayout>
希望有人能理解我试图解释的内容。
答案 0 :(得分:0)
正如我在评论中提到的,您的描述与您提供的代码并不完全匹配。此外,还不清楚您所显示的方法在哪里被调用。实际上,如果您的布局包含上述all
,option1
,option2
和option3
CheckBoxes
,则以下代码应该与您一样我描述过。
在Activity
:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_selection);
all = (CheckBox) findViewById(R.id.All);
option1 = (CheckBox) findViewById(R.id.option1);
option2 = (CheckBox) findViewById(R.id.option2);
option3 = (CheckBox) findViewById(R.id.option3);
all.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b) {
option1.setChecked(false);
option2.setChecked(false);
option3.setChecked(false);
}
}
});
option1.setOnCheckedChangeListener(optionCheck);
option2.setOnCheckedChangeListener(optionCheck);
option3.setOnCheckedChangeListener(optionCheck);
}
final CompoundButton.OnCheckedChangeListener optionCheck = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b) {
all.setChecked(false);
}
}
};