我需要在應用kill的時候保存按鈕狀態,通過sharedpreference。
在/data/data/myapp/shared_prefs
這裡可以看見按鈕值true/false已經被寫入了。但是在應用kill的時候讀取狀態出現問題。
按鈕每次重啟都會進入默認狀態true,我在一個fragment中運行的,因此我用了:
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();
}
}
});
this.getActivity()會可能返回null,所以你不能這樣做。
你需要放在onAttach(Activity activity)裡面進行preferences的初始化。