我想救我的切换按钮的状态,当应用程序被杀害的,并通过SharedPreferences
重新启动。sharedpreferences不读按钮状态
我可以在/data/data/myapp/shared_prefs
上看到写入了真值/假值的xml,但是我每次停止并重新启动应用程序时都会让代码读取首选项。
该按钮只是重置为默认状态,在我的情况下是true。就我而言,我正在运行它的一个片段;所以我不得不使用:
final SharedPreferences preferences = this.getActivity().getSharedPreferences("tg1pref",0);
这里是我的代码:
boolean on;
public SharedPreferences preferences;
final ToggleButton toggleButton1 = (ToggleButton) v.findViewById(R.id.toggleButton1);
final SharedPreferences preferences = this.getActivity().getSharedPreferences("tg1pref",0);
boolean tg1pref = preferences.getBoolean("tg1pref", true);
if (tg1pref = true) {
toggleButton1.setChecked(true);
} else {
toggleButton1.setChecked(false);
}
toggleButton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if((toggleButton1.isChecked())) {
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("tg1pref", true); // value to store
editor.commit();
} else {
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("tg1pref", false); // value to store
editor.commit();
}
}
});
感谢您的帮助!
与t0mm13b方法解决:
if (tg1pref = true) {
//That should be:
if (tglpref){ // Meaning and same as if (tglpref == true)
可能要editor.apply使用(),而不是编辑it.commit()。 –