Как снять флажок с Android
У меня есть два переключателя и 5 флажков в моем приложении для Android. а также кнопка сохранения. Когда пользователь нажимает кнопку "Сохранить", мне нужно снять флажки, отмеченные пользователем. Я попытался с помощью следующего кода. Но это не работает.
if (chkOthers.isChecked())
chkOthers.setChecked(false);
chkOthers.setSelected(false);
}
4 ответа
Просто используйте chk1.toggle() onClick кнопки, чтобы снять помеченные.
public class TestCheckBoxActivity extends Activity {
/** Called when the activity is first created. */
CheckBox chk1, chk2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
chk1 = (CheckBox)findViewById(R.id.checkBox1);
chk2 = (CheckBox)findViewById(R.id.checkBox2);
Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(chk1.isChecked()){
chk1.toggle();
}
if(chk2.isChecked()){
chk2.toggle();
}
}
});
}
}
Если вы хотите использовать для этого флажки, вы можете установить onItemClickListener на оба флажка и отменить выбор других в методе onItemClick(). Пример будет выглядеть так:
CheckBox cb1,cb2;
//Considering you can initialize the above variables
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener{
onCheckedChanged (CompoundButton view, boolean isChecked){
cb2.setChecked(false);
}
});
cb2.setOnCheckedChangeListener(new OnCheckedChangeListener{
onCheckedChanged (CompoundButton view, boolean isChecked){
cb1.setChecked(false);
}
});
Я бы порекомендовал вам использовать радио-кнопки для этого поведения, поскольку они поставляются с этой функциональностью, встроенной с самого начала.
Button b = findViewById(R.id.{yourButtonID});
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chk1.setChecked(false);
chk2.setChecked(false);
chk3.setChecked(false);
chk4.setChecked(false);
chk5.setChecked(false);
}
});
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(holder.checkBox.isChecked()) {
holder.checkBox.setChecked(false);
}else {
holder.checkBox.setChecked(true);
}
}
});