I have a few checkboxes within a dialog window. I want to save the checkboxes, after the customer confirmed with a button, that he want to save those settings. I tried to realize the code above, I cant find a way where I have to declerate the boolean's check1 and check2. Hope anyone can help me, if you need more information, please ask.
我在对话框窗口中有几个复选框。我想在客户用按钮确认后保存复选框,他要保存这些设置。我试图实现上面的代码,我找不到一种方法,我必须解除布尔的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();
}
});
});
2 个解决方案
#1
0
If you only want to get the checked state of button. Why don't you use isChecked() of Checkbox? Make checkbox1, checkbox2 are final. Then
如果您只想获得按钮的选中状态。你为什么不使用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();
}
});
#2
0
Choice 1
Add these 2 lines before button click -
在点击按钮之前添加这两行 -
final boolean checked_1 = check1;
final boolean checked_2 = check2;
Then, use these booleans instead inside click event.
然后,在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();
}
});
});
Choice 2
Declare check1 and check2 in class level, and make it like -
在类级别声明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
If you only want to get the checked state of button. Why don't you use isChecked() of Checkbox? Make checkbox1, checkbox2 are final. Then
如果您只想获得按钮的选中状态。你为什么不使用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();
}
});
#2
0
Choice 1
Add these 2 lines before button click -
在点击按钮之前添加这两行 -
final boolean checked_1 = check1;
final boolean checked_2 = check2;
Then, use these booleans instead inside click event.
然后,在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();
}
});
});
Choice 2
Declare check1 and check2 in class level, and make it like -
在类级别声明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();
}
});
});