2013-03-18 24 views
0

我有一個CheckBoxPreference定義如下:CheckBoxPreference默認值

<CheckBoxPreference 
    android:defaultValue="true" 
    android:key="prefVisible" 
    android:summary="@string/pref_visible_summary" 
    android:title="@string/pref_visible" > 
</CheckBoxPreference> 

我的應用程序使用此偏好來控制的圖的可見性。當我第一次啓動我的應用程序時(在新的上擦除模擬器),視圖不顯示。但是,當我進入首選項屏幕(活動)時,複選框顯示爲選中狀態。

這是否意味着默認值屬性不實際設置的偏好,而是它只是設置複選框的值,如果沒有基礎數據(如將是對一個全新安裝的情況下)。這是否也意味着首選項僅在用戶首次進入/退出首選項屏幕(活動)後設置,否則它是undefined

注意的是,爲了讓我的應用程序來工作,我想要它工作,我的默認值參數喜好getter方法依賴如下的方式:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
boolean isVisible = sharedPrefs.getBoolean("prefVisible", true); // default = true 

這讓我有點困惑爲什麼有兩種方法來控制首選項的默認值:在Xml中定義它或在getBoolean方法中提供默認值。

回答

1

如果您致電PreferenceManager.setDefaultValues,則不能設置首選項。所以如果你在第一次啓動應用程序時調用它,那麼你的視圖就會顯示出來。
你可以閱讀更多在http://developer.android.com/guide/topics/ui/settings.html

+0

所以在我的主要活動的onCreate()方法只是調用PrefereceManager.setDefaultValues? – 2013-03-18 23:48:20

+0

好奇,爲什麼如果UI定義(xml)也有它們,那麼getter方法有默認值? – 2013-03-18 23:50:45

+0

是的,但要注意國旗參數。我忘記了再次調用它不會重置首選項。 – 2013-03-18 23:50:50