2012-12-25 50 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);