下面是我遇到的问题:在我的应用程序中,我有几个首选项存储在sharedPreferences中,它们记录了应用程序的不同设置。这些是一些字符串。因为我希望应用程序以这些设置的一些默认值开始,所以在onCreate中,我为每个设置构造一个“设置”对象,在其中检查相关的sharedPreference是否为null,如果是这样,则将默认值置于sharedPreference。ListPreferences的奇怪行为
Setting(int setting, String default)
{
storedPref=sharedPref.getString(getText(setting),null);
if(storedPref==null)
{
SharedPreferences.Editor edit=sharedPred.edit()
edit.putString(getText(setting),default);
edit.comit
}
}
与这些设置关联的视图是ListPreferences()。当第一次打开应用程序时,它们应该显示一个选项列表,其中选定的选项是默认选项,但是有时候不会选择任何选项,甚至不选择默认选项。
listPreferences是通过将数组设置为“entries tag”和“values tag”来构建的。我不太确定,我应该传递给Setting对象的默认构造函数,entries数组的成员还是来自值的某个值!如果我传递了一些条目,那么Listpreferences将会有预期的行为,其中一些会有上面描述的行为。如果我不这样做,并从值数组中传递一些东西,同样的事情发生!有没有人有任何意识为什么这种奇怪的行为?
是的,但比并不意味着默认将被保存,这正是我所需要的。 – 2010-04-02 15:15:59