我需要在android studio中为我的应用程序中的一个设置选项卡保存一个复选框的值,以改变灵敏度,但我想不通为什么我的SharedPreferences不能工作,我想我会尝试将复选框覆盖到一个布尔值,但这似乎不能保存我的数据。
代码:我需要保存一个复选框的值,但这似乎无法保存我的数据。
private CheckBox checkSens;
private boolean cbValue;
private static boolean finalSens;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
finalSens = LoadPrefs();
checkSens = (CheckBox) findViewById(R.id.checkSens);
checkSens.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
savePrefs("CheckBox", isChecked);
}
});
checkSens = (CheckBox) findViewById(R.id.checkSens);
}
public static boolean getCheckSens() {
return finalSens;
}
private boolean LoadPrefs()
{
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
cbValue = sp.getBoolean("CheckBox", false);
return cbValue;
}
private void savePrefs(String key, boolean value)
{
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor edit = sp.edit();
edit.putBoolean("CheckBox", value);
edit.commit();
}
请使用setOnCheckedChangeListenerinstead而不是setOnClickListener来获取复选框的值。请参考下面的代码。
checkSens = (CheckBox) findViewById(R.id.checkSens);
checkSens .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompundButton button, boolean isChecked)
{
savePrefs("CheckBox", isChecked);
}
});