PreferenceManager.getDefaultSharedPreferences(context)


getPreferences()

似乎得到了不同的偏好。
PreferenceManager.getDefaultSharedPreferences(context).getBoolean(
                        "userWasAskedToEnableGps", false);

对我来说是假的,
getPreferences(MODE_PRIVATE).getBoolean("userWasAskedToEnableGps", false);

返回true。
这个偏好是由一个编辑写的,比如
Editor e = getPreferences(MODE_PRIVATE).edit();
e.putBoolean (...);
e.commit();

如何从上下文中获取活动之外的相同首选项?

最佳答案

从android github repo(1)中,我们可以看到getPreferences除了使用当前类名调用getSharedPreferences方法之外什么也不做。

public SharedPreferences getPreferences( int mode ) {
    return getSharedPreferences( getLocalClassName(), mode );
}

没有任何东西限制其他活动/代码访问具有适当类名的共享首选项。更重要的是,我不喜欢使用getPreferences,因为这意味着=>永远不会更改活动名称。如果您更改了,请注意访问共享的首选项,并明确提到以前的类名(在升级之前)。

08-17 20:45