2011-07-30 3 views
0

내 활동에 일부 환경 설정이 있습니다. 이러한 환경 설정에 따라 일부 서비스가 시작되거나 중지된다는 것을 알리고 싶습니다. onSharedPreferenceChanged 메서드를 구현하려고하지만 호출되지 않습니다 (심지어 필드에 할당 한 경우에도 마찬가지 임). 코드는 다음과 같습니다.Android 환경 설정이 변경됨

public class MtprojectActivity extends Activity { 
... 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     prefs = PreferenceManager.getDefaultSharedPreferences(this); 
callsCheckbox = prefs.getBoolean("callsLogChk", true); 
listener = new SharedPreferences.OnSharedPreferenceChangeListener() { 
      @Override 
      public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 
       if (!started) { 
        startCallsService(); 
        bindCallsService(); 
       } else { 
        releaseCallsService(); 
        stopCallsService(); 
       } 
      } 
     }; 

     prefs.registerOnSharedPreferenceChangeListener(listener); 

미리 감사드립니다.

답변

0

전화가 걸려 오지 않았습니까, 아니면 예상하지 못한 것입니까? 제가 틀릴 수도 있지만 코드는 내가 코드를 모르는 나는 완전히 틀렸을 수도 있지만 당신이 그것을 게시 한대로, 그렇지, ... 이런 식으로

if (key.equals("callsLogChk")) { 
    if (!started) { // Check NOT started ??? 
     startCallsService(); 
     bindCallsService(); 
    } 
    else { // The 'else' should compliment the check for !started ??? 
     releaseCallsService(); 
     stopCallsService(); 
    } 
} 

죄송 보지한다 나에게 꽤 똑바로 보인다.

편집 : 또한

, 당신은 환경 설정의 변경을 할 때 당신이 SharedPreferences.Editor.commit() 메소드를 호출 확인하고 있습니다?

+0

예, 변경되었지만 청취자는 아직 전화를받지 못했습니다. – noloman

+0

@noloman : OK, 나중에 편집하십시오. – Squonk

+0

아니요, 어떻게해야합니까? onSharePreferenceChangedListener 내에서 어디에서해야합니까? – noloman

관련 문제