0

我有一个 settings.xml 文件,其中包含我的应用程序的首选项。默认情况下,所有值都设置为“true”,并且在我的应用程序中由 PreferenceActivity 使用。在我的主要活动中,我通过阅读价值观

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

除了第一次之外,它在任何时候都能得到我需要的任何东西。只有当我第一次打开我的应用程序并且没有打开我的设置菜单时,我才会得到“假”。我的意思是我必须打开菜单,然后才能正确运行应用程序。

有什么建议么?

4

2 回答 2

2

因为你是第一次获得默认值。那是错误的-->

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

用这个

Boolean key = sp.getBoolean("M", true);
于 2012-12-25T08:20:45.003 回答
0

改为使用sp.getBoolean("M", true);。首选项文件中的默认值是首选项活动首次启动时的值。SharedPreferences 对您的 settings.xml 一无所知。

或者,您可以有一个单独的 defaults.xml 文件(或任何其他名称),其中包含所有首选项的所有默认值。@bool/default_M_value然后在 settings.xml ( ) 和应用程序 ( )中使用这些值sp.getBoolean("M", getResources().getBoolean(R.bool.default_M_value))

我个人会坚持第一种方法。

于 2012-12-25T08:15:39.643 回答