2012-11-29 2 views
3

그래, Google의 안드로이드에서이 끔찍한 코드를 구현하기 시작했습니다. OnSharedPreferenceChangeListener가 호출되지 않습니다. 이것은 내 코드입니다, 조언을 좀 해주시겠습니까?OnSharedPreferenceChangeListener가 # 2가 호출되지 않았습니다.

클래스 정의 : I는 개인 내부 클래스가

private SharedPreferences sPrefs; 
private PreferenceChangedListener prefsChangedListener; 

: 테 OnResume에서 코드를 다음과 'Voorkeuren'PreferenceActivity를 시작 후 리스너를 등록하는 시도

private class PreferenceChangedListener implements 
     OnSharedPreferenceChangeListener { 

    public void onSharedPreferenceChanged(
      SharedPreferences sharedPreferences, String key) { 
     if (key == "highThreshold") { 
      try { 
       highThreshold = Float.parseFloat(sharedPreferences 
         .getString(key, "0")); 
      } catch (Exception e) { 
      } 
     } 
    } 
} 

. 둘 다 실패합니다.

Intent intent = new Intent(getBaseContext(),Voorkeuren.class); 
startActivity(intent); 

클래스 잘 나타나과 세션 사이의 값을 저장 :

sPrefs = getPreferences(MODE_PRIVATE); 
prefsChangedListener = new PreferenceChangedListener(); 
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener); 

는 난 다음 오픈
public class Voorkeuren extends PreferenceActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_voorkeuren, menu); 
     return true; 
    } 
} 

PreferenceActivity를

연장 클래스 Voorkeuren 정의. 하지만 설정이 엉망이라면 내 애플리케이션을 폴링해서는 안됩니다. 어떤 아이디어? SharedPreferences.Editor에 대해 뭔가 빨간색이 있지만 어떻게 관련이 있는지 잘 모르겠습니다.

+0

변경 ..if하는 (key.equals (에

sPrefs = PreferenceManager.getDefaultSharedPreferences(this);; prefsChangedListener = new PreferenceChangedListener(); sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener); 

에이 교체 highThreshold ")) ... – LionKing

답변

4

질문이 무엇이고 원하는 것이 확실하지 않습니다.

하지만해야 할 변경 사항이 하나 있습니다. "onResume에

sPrefs = getPreferences(MODE_PRIVATE); 
prefsChangedListener = new PreferenceChangedListener(); 
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener); 

에서 onCreate()

(키 =="highThreshold ") .. ..if
+0

Yess, thanks :) getPreferences가 어떻게 든 getDefaultSharedPreferences (this)와 다른 somehting을 반환합니다. 나는 원래의 내부 클래스에서도 작동하도록했습니다. – Harmen

+0

'onCreate()'에서? –

+0

예, fromCreate() – Harmen

관련 문제