2013-01-12 94 views
0

我對這段代碼有問題。我想保持偏好值在我的應用程序,但我有聽衆的問題。不起作用,它不會保存新的值。任何關於錯誤的想法?聽衆sharedpreferences

編輯:onResume()的作品,因爲當我在我的應用程序上打開一個活動並關閉它時,sharepreferences的值是正確的。對話框和活動不保留值。

public void onCreate(){ 
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
      listener = new SharedPreferences.OnSharedPreferenceChangeListener() { 
       public void onSharedPreferenceChanged(SharedPreferences prefs, String listpref) { 
        if(!preferencesChanged)preferenze(); 

      } 
       }; 
     sp.registerOnSharedPreferenceChangeListener(listener); 

有意圖調用一些按鈕和其他信息活動。
一個TextView,它顯示數組中的值而沒有任何值。

public void onPause() { 
     super.onPause(); 
     SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
     sp.unregisterOnSharedPreferenceChangeListener(listener); 

protected void onResume() { 
     super.onResume(); 
     SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
     listener = new SharedPreferences.OnSharedPreferenceChangeListener() { 
     public void onSharedPreferenceChanged(SharedPreferences prefs, String listpref) { 
     preferencesChanged = true; 
       } 
     }; 
     sp.registerOnSharedPreferenceChangeListener(listener); 

protected void onStop(){ 
     super.onStop(); 
     if(preferencesChanged){ 
      //Update the app 
      preferenze(); 
     } 


public void preferenze() 
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 

     CheckboxPreference = prefs.getBoolean("checkboxPref", true); 
     ListPreference = prefs.getString("listpref", ""); 

其他變量和大多數if/else。

的preferences.xml:

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      addPreferencesFromResource(R.layout.preferences); 

    } 

    @Override 
    public void onSharedPreferenceChanged(SharedPreferences prefs, String listpref) { 
+0

你在哪裏調用'的onCreate()'方法? –

+0

代碼結束。我剛剛更新。 –

+0

可以üPLZ編輯整個班級代碼,那麼它是非常有助於解決問題 –

回答

0
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(this); sp.registerOnSharedPreferenceChangeListener(this); } 

我想,你缺少registerOnSharedPreferenceChangeListener

+0

我已onCreate() –