2013-08-06 112 views
0

我已爲我的應用註冊了onSharedPreferencesChanged監聽器。如果我第一次安裝我的應用程序,sharedPreferencesChanged監聽器被觸發,但它不應該。首次啓動「首選項」活動時,會觸發Android onSharedPreferencesChanged

這裏是我的代碼:

onSharedPrefChangedListener = new SharedPreferences.OnSharedPreferenceChangeListener() { 


      @Override 
      public void onSharedPreferenceChanged(
        SharedPreferences sharedPreferences, String key) { 
       // TODO Auto-generated method stub 
       if(key.equals(ENABLE_BANNER_AD_PREFERENCE_KEY)){ 
     Toast.makeText(FragmentTabsPager.this,getString(R.string.will_disable_restart), Toast.LENGTH_SHORT).show(); 
       } 

      } 

     }; 
     sharedPreferences.registerOnSharedPreferenceChangeListener(onSharedPrefChangedListener); 

和多數民衆在首XML:

<CheckBoxPreference android:title="@string/title" 
         android:summary="@string/summary" 
         android:icon="@drawable/icon" 
         android:defaultValue="true" 
         android:key="bannerKey"> </CheckBoxPreference> 

敬酒時,我開始了第一次aftern應用程序的安裝出現。如果我再次啓動應用程序並導航到Preferences,preferencesListener將不會被觸發。

有沒有人有想法解決這個問題?

回答

0

IMO系統所做的是正確的行爲。

但是你應該能夠引入一個標誌來區分第一次調用和隨後的調用。

+0

也許它是正確的行爲。但我不明白爲什麼只有在第一次啓動後才能啓動?.. – zennon

+0

嘗試刪除應用程序數據。首選項偵聽器是否會被調用? – 18446744073709551615

+0

好主意..我已經刪除了應用程序數據..監聽器再次調用.. – zennon