我在对话框窗口中有几个复选框。我想在客户确认按钮后保存复选框,他要保存这些设置。 我试图实现上面的代码,我找不到一种方法,我必须解除布尔的check1和check2。希望有人可以帮助我,如果您需要更多信息,请询问。
protected void onCreate(Bundle savedInstanceState) {
// ....
SharedPreferences prefs = getSharedPreferences("testSave", 0);
checkbox1.setChecked(prefs.getBoolean("cbx1_ischecked" ,false));
checkbox2.setChecked(prefs.getBoolean("cbx2_ischecked" ,false));
// ...
checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
// TODO Auto-generated method stub
check1=isChecked;
}
});
checkbox2.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
// TODO Auto-generated method stub
check2=isChecked;
}
});
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Editor editor = getSharedPreferences("testSave", 0).edit();
editor.putBoolean("cbx1_ischecked", check1);
editor.putBoolean("cbx2_ischecked", check2);
editor.commit();
}
});
});
答案 0 :(得分:0)
选择1
在点击按钮之前添加这两行 -
final boolean checked_1 = check1;
final boolean checked_2 = check2;
然后,在click事件中使用这些布尔值。
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Editor editor = getSharedPreferences("testSave", 0).edit();
editor.putBoolean("cbx1_ischecked", checked_1);
editor.putBoolean("cbx2_ischecked", checked_2);
editor.commit();
}
});
});
选择2
在类级别声明check1和check2,并使其像 -
boolean check1 = false;
boolean check2 = false;
protected void onCreate(Bundle savedInstanceState) {
// ....
SharedPreferences prefs = getSharedPreferences("testSave", 0);
checkbox1.setChecked(prefs.getBoolean("cbx1_ischecked" ,false));
checkbox2.setChecked(prefs.getBoolean("cbx2_ischecked" ,false));
// ...
checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
// TODO Auto-generated method stub
check1=isChecked;
}
});
checkbox2.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
// TODO Auto-generated method stub
check2=isChecked;
}
});
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Editor editor = getSharedPreferences("testSave", 0).edit();
editor.putBoolean("cbx1_ischecked", check1);
editor.putBoolean("cbx2_ischecked", check2);
editor.commit();
}
});
});
答案 1 :(得分:0)
如果您只想获得按钮的选中状态。 为什么不使用Checkbox的isChecked()? 复选框1,复选框2是最终的。 然后
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Editor editor = getSharedPreferences("testSave", 0).edit();
editor.putBoolean("cbx1_ischecked", checkbox1.isChecked());
editor.putBoolean("cbx2_ischecked", checkbox2.isChecked());
editor.commit();
}
});