其他分享
首页 > 其他分享> > android – PreferenceManager.getDefaultSharedPreferences()vs getPreferences()

android – 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,因为这意味着=>永远不会更改活动名称.如果更改,则使用明确提及的早期类名称(升级前)来处理访问共享首选项.

标签:android,sharedpreferences,android-preferences
来源: https://codeday.me/bug/20190929/1830912.html