当我使用上述代码并选择male
复选框时,我只能选中male
复选框。如果取消选中female
复选框,则无法选择male
。
checkboxmale.setOnCheckedChangeListener (new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
Toast.makeText(DonorReg.this, "male", Toast.LENGTH_SHORT).show();
checkboxfemale.setEnabled(false); // disable checkbox
}
}
});
checkboxfemale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override public void onCheckedChanged(CompoundButton compoundButton, booleanisChecked) {
if (isChecked) {
Toast.makeText(DonorReg.this, "Female", Toast.LENGTH_SHORT).show();
checkboxmale.setEnabled(false); // disable checkbox
}
}
});
答案 0 :(得分:0)
取消选中此复选框时,只需添加其他条件。
checkboxmale.setOnCheckedChangeListener (new
CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean
isChecked) {
if (isChecked) {
Toast.makeText(DonorReg.this, "male", Toast.LENGTH_SHORT).show();
checkboxfemale.setEnabled(false); // disable checkbox
}else{
Toast.makeText(DonorReg.this, "Unchecked male",
Toast.LENGTH_SHORT).show();
checkboxfemale.setenabled(true);
}
}
});
为女性checkchange听众做同样的事。
答案 1 :(得分:0)
当您停用View
时,除非您再次启用它,否则它将永远不会检测到Click或Touch等任何事件。因此,对于您的情况,禁用是不必要的,只需以编程方式取消选中复选框即可。
所以改变这一行:
checkboxfemale.setEnabled(false);
对此:
checkboxfemale.setChecked(false);
同时更改此行:
checkboxmale.setEnabled(false);
对此:
checkboxmale.setChecked(false);
从那里你的代码将按预期工作。
答案 2 :(得分:0)
我建议将其更改为单选按钮,因为用户一次只能选择一个选项,而Radio选项对此有用。
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RadioGroup
android:id="@+id/genderRadioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/maleRadioButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Male" />
<RadioButton
android:id="@+id/femaleRadioButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Female" />
</RadioGroup>
</LinearLayout>
类文件
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.RadioGroup;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RadioGroup genderRadioGroup = (RadioGroup) findViewById(R.id.genderRadioGroup);
genderRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.maleRadioButton: {
break;
}
case R.id.femaleRadioButton: {
break;
}
}
}
});
}