2012-02-06 24 views
0

後,我重新安排產權變更後的警報。我需要閱讀各種變量。問題是,當我從OnPreferenceChangeListener運行函數時,此函數會看到優先值的舊值。的Android - 事件隊列 - 執行首選項設置

我想做一些我從AWT/Swing開發知道:add命令事件隊列,這樣它就會被執行處理後的UI事件,它在完成首選項更改操作後,也意味着。問題是...我在Android中找不到類似EventQueue的東西。我發現只有runOnUiThread操作,這是不是我所需要的,因爲按規定命令將被立即執行,如果我們已經在UI線程。

所以,請你幫我,我需要什麼用?也許我已經搜索了錯誤的關鍵字....

+0

「問題是,當我運行從OnPreferenceChangeListener的功能,這個功能看到舊值的偏好。「 - 這不應該發生。 – CommonsWare 2012-02-06 17:53:08

+0

正是如此,因爲這個監聽器可以取消的變化,所以這種方法完成 – 2012-02-06 18:53:33

+0

後,將提交'OnSharedPreferenceChangeListener'不能「取消更改」。 – CommonsWare 2012-02-06 23:56:51

回答

1

在我的情況下,我使用了錯誤的OnPreferenceChangeListener在優先級更改階段使用,在單個首選項上註冊並應用於首選項值驗證。

這是我需要的是註冊後的偏好已經改變,將調用該偵聽器。這個任務是有OnSharedPreferenceChangeListener做,任何偏好改變後,將被調用,變化已經對應用程序可見:

PreferenceManager.getDefaultSharedPreferences(this) 
     .registerOnSharedPreferenceChangeListener(
      new OnSharedPreferenceChangeListener() { 

     public void onSharedPreferenceChanged(
       SharedPreferences sharedPreferences, String key) { 
      if (MYKEY1.equals(key) 
        || MYKEY2.equals(key)) { 
       doSomething(); 
      } 
     } 
    });