8

在我的應用程序,一些設置可能被改變,而PreferenceActivity是不公開的,我遇到了一個問題,就是addPreferencesFromResource被稱爲onCreate,所以說,我打開PreferenceActivity,然後從那裏轉到另一個屏幕,然後執行一些更改設置的操作,然後按返回鍵返回到PreferenceActivity,然後在佈局上某些設置沒有更改。刷新首選項PreferenceActivity上的繼續

那麼,如何在每次調用onResume(或onStart())時重新加載所有Preferences而不重複佈局?

回答

3

編輯:該解決方案將用於API只工作11 +。

林不知道我完全理解你的問題,但你可以添加一個調用重建()注入了從我的理解有活動的活動的onResume整個生命週期內着呢。

爲了確保只有在實際上存在髒數據時才這樣做,我會在SharedPreferences中設置一個標誌,讓您的活動在onResume()中知道它需要重新創建。

public void onResume(){ 
      super.onResume(); 
      SharedPreferences pref = getApplicationContext().getSharedPreferences(Constants.PREFS_NAME, Context.MODE_PRIVATE); 
      if(pref.getBoolean("isDirtyPrefs", true)) 
       recreate(); 
     } 
+0

謝謝。我還沒有測試過,但看起來會起作用。我沒有意識到我在PreferenceActivity和PreferenceManager中看到的recreate()命令。但是謝謝你,因爲那正是我想要的。 – Jakar

+4

重新創建是API拉特11 – Blundell

+0

我建議你測試出來的邏輯,因爲這樣會循環一遍又一遍,因爲的onResume將在生命週期過程中被調用,如果開發商不設置優先級,或者不存在,比它會默認爲true並循環。 –

1

我有類似的問題。未能找到一個簡單的方法,使我PreferenceActivity刷新自己,我的解決辦法是把它添加到我的PreferenceActivity:

/** 
* Called when activity leaves the foreground 
*/ 
protected void onStop() { 
    super.onStop(); 
    finish(); 
} 

這將導致偏好設置屏幕從SharedPreferences未來它啓動時重新加載。毋庸置疑,如果您希望能夠通過使用後退按鈕返回到首選項屏幕,則此方法將不起作用。

+0

我認爲,但我的'PreferenceActivity'啓動等活動,將剛剛太麻煩了覆蓋'onKeyDown'和'onKeyUp'這些活動重新開始我的'PreferenceActivity'。不過謝謝你的建議。 – Jakar

相關問題