2013-01-23 84 views
2

我想救我的切换按钮的状态,当应用程序被杀害的,并通过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) 
+0

可能要editor.apply使用(),而不是编辑it.commit()。 –

回答

4

这条线:

if (tg1pref = true) { 

这应该是:

if (tglpref){ // Meaning and same as if (tglpref == true) 

有一个错字在那里!

+0

这样做。 =是一项任务==是比较。 – Booger

+0

你...是....人.... – iGio90