
[英]NullPointerException at PreferenceManager.getDefaultSharedPreferences on startup
[英]PreferenceManager.getDefaultSharedPreferences() vs getPreferences()
PreferenceManager.getDefaultSharedPreferences(context)
和
getPreferences()
似乎检索不同的首选项。
PreferenceManager.getDefaultSharedPreferences(context).getBoolean(
"userWasAskedToEnableGps", false);
对我来说,返回false,
getPreferences(MODE_PRIVATE).getBoolean("userWasAskedToEnableGps", false);
返回true。
Preference是用编辑器编写的
Editor e = getPreferences(MODE_PRIVATE).edit();
e.putBoolean (...);
e.commit();
如何在Context中的Activity之外获得相同的Preferences?
从android github repo( 1 ),我们可以看到getPreferences
除了使用当前类名调用getSharedPreferences
方法之外什么也不做。
public SharedPreferences getPreferences( int mode ) {
return getSharedPreferences( getLocalClassName(), mode );
}
没有什么限制其他活动/代码使用适当的类名访问共享首选项。 更重要的是,我不想使用getPreferences
,因为这意味着=>永远不会更改活动名称。 如果更改,则使用明确提及的早期类名称(升级前)来处理访问共享首选项。
使用具有相同常量名称的Context.getSharedPreferences ,它将在您的应用程序的任何位置为您提供相同的首选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.