我在我的Android应用程序中使用了几个CheckBoxPreference来添加设置菜单。但有没有办法说当时只检查一个且只有一个CheckBoxPreference 必须?
答案 0 :(得分:1)
这是一种方法,但它肯定可以改进!
public class Settings extends PreferenceActivity{
CheckBoxPreference cb1;
CheckBoxPreference cb2;
CheckBoxPreference cb3;
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
addPreferencesFromResource(R.xml.preferences);
cb1 = (CheckBoxPreference) findPreference("CheckBox1");
cb2 = (CheckBoxPreference) findPreference("CheckBox2");
cb3 = (CheckBoxPreference) findPreference("CheckBox3");
cb1.setOnPreferenceChangeListener(new Listener());
cb2.setOnPreferenceChangeListener(new Listener());
cb3.setOnPreferenceChangeListener(new Listener());
}
private class Listener implements OnPreferenceChangeListener {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if((Boolean) newValue)
removeOthers(preference.getKey());
return true;
}
}
private void removeOthers(String key) {
if(key.equals("CheckBox1")) {
cb2.setChecked(false);
cb3.setChecked(false);
}
else if(key.equals("CheckBox2")) {
cb1.setChecked(false);
cb3.setChecked(false);
}
else if(key.equals("CheckBox3")) {
cb1.setChecked(false);
cb2.setChecked(false);
}
}
}
答案 1 :(得分:0)
这是非常基本的逻辑:
int numOfCheck = 0;
//Check each checkbox
if(checkbox1.checked){
numOfCheck+=1;
}
//... Add other checkboxes
if(numOfCheck>1||numOfCheck<1){
//... Alert the user
}
答案 2 :(得分:0)
很简单:RadioGroup。