Ну, поскольку есть два разных флажка, вы должны работать с обоими этими флажками, и вы должны также вызвать состояние другого флажка. Надеюсь, что приведенный ниже фрагмент кода поможет вам добиться того, чего вы хотите.
teacher = (CheckBox) findViewById(R.id.chkTeacher);
student = (CheckBox) findViewById(R.id.chkStudent);
if (teacher.isChecked() == true){
student.setchecked(false);
type = "teacher";
}
if (student.isChecked() == true) {
teacher.setchecked(false);
type = "student";
}
Или вы можете использовать setOnCheckedChangeListener
следующим образом:
result = findViewById(R.id.tv_res);
teacher = findViewById(R.id.cb_tec);
student = findViewById(R.id.cb_std);
teacher.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked)
{
if (student.isChecked()) student.setChecked(false);
type = "teacher";
}
result.setText(type);
}
});
student.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked)
{
if (teacher.isChecked()) teacher.setChecked(false);
type = "student";
}
result.setText(type);
}
});
Попробуйте second решение, которое работает, проверьте:
Пожалуйста, посмотрите и дайте мне знать, если это работает.