2012-12-25 86 views
0

我有一個settings.xml文件,其中包含我的應用程序的首選項。默認情況下,所有的值都設置爲「true」,並由PreferenceActivity在我的應用中使用。 在我的主要活動我通過SharedPreferences默認值

 SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(appContext); 
    Boolean key = sp.getBoolean("M", false); 

讀出的值能把我什麼,我需要在任何運行除了在第一時間。只有當我第一次打開我的應用程序,並沒有打開我的設置菜單時,我會得到「false」。我的意思是我必須打開菜單,然後才能正常運行。

有什麼建議嗎?

+0

如何從settings.xml的移動值的共享偏好不運行PreferenceActivity? – Henry

回答

0

改爲使用sp.getBoolean("M", true);。首選項文件中的默認值是首次啓動首選項活動時的默認值。 SharedPreferences對你的settings.xml一無所知。

或者,您可以有一個單獨的defaults.xml文件(或任何其他名稱),其中包含所有首選項的所有默認值。然後,您在settings.xml(@bool/default_M_value)和您的應用程序(sp.getBoolean("M", getResources().getBoolean(R.bool.default_M_value)))中都使用這些值。

雖然我個人會堅持第一種方法。

1

因爲yor第一次獲得默認值。 那是假的 - >

Boolean key = sp.getBoolean("M", false); 

使用本

Boolean key = sp.getBoolean("M", true);