2013-01-12 5 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", ""); 

기타 변수와 대부분/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

은 전체 클래스 코드를 편집 할 수 있으므로 –

답변

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()를했습니다. –