Java 安卓工作室-Can';无法读取首选项设置
我正在尝试使用SharedReference保存用户的语言。MainActivity是我的主要活动,SettingsActivity是我询问和保存用户语言的地方 保存:Java 安卓工作室-Can';无法读取首选项设置,java,android,Java,Android,我正在尝试使用SharedReference保存用户的语言。MainActivity是我的主要活动,SettingsActivity是我询问和保存用户语言的地方 保存: private SharedPreferences preferenceSettings; private SharedPreferences.Editor preferenceEditor; private static final int PREFERENCE_MODE_PRIVATE = 0; public void sa
private SharedPreferences preferenceSettings;
private SharedPreferences.Editor preferenceEditor;
private static final int PREFERENCE_MODE_PRIVATE = 0;
public void save(String lg){
preferenceSettings = getPreferences(PREFERENCE_MODE_PRIVATE);
preferenceEditor = preferenceSettings.edit();
preferenceEditor.putString("language", lg);
preferenceEditor.commit();
finish();
}
阅读:
preferenceSettings = getPreferences(PREFERENCE_MODE_PRIVATE);
String LanguageS = preferenceSettings.getString("language", "0");
有了这段代码,我可以成功地保存和读取同一活动(SettingsActivity),但当我返回到主活动时,我无法读取
我正在使用此代码读取我的主要活动,但它始终返回“0”
我做错了什么?我控制这些线路将近1小时,但没有发现任何错误。您应该使用
如果您阅读getPreferences(int模式)
上的java文档,它会说:
Retrieve a {@link SharedPreferences} object for accessing preferences
that are private to this activity.
This simply calls the underlying
{@link #getSharedPreferences(String, int)} method by
passing in this activity's class name as the preferences name. @param
mode Operating mode.
Use {@link #MODE_PRIVATE} for the default
operation, {@link #MODE_WORLD_READABLE} and {@link
MODE_WORLD_WRITEABLE} to control permissions.
@return Returns the single SharedPreferences instance that can be used
to retrieve and modify the preference values.
这是因为,您使用的方法是
getPreferences(PREFERENCE\u MODE\u PRIVATE)
返回由活动的类名保存的首选项,如下所述:
检索SharedReferences对象以访问此活动专用的首选项。这只是通过传入此活动的类名作为首选项名称来调用底层的getSharedReferences(String,int)方法
因此,当您在SettingsActivity
中保存prefs时,它将以的名称“SettingsActivity”
但是,当您在MainActivity
中获取prefs时,它会将保存在名称“MainActivity”下的prefs返回给您
因此,您应该使用同名的方法。请发布getPreferences()方法。他可能使用标准库中的方法。谢谢,伙计。我的错。我想我现在需要睡觉了。我以前用过这个东西,但3个月后,我就记不起来了。再次感谢!
Retrieve a {@link SharedPreferences} object for accessing preferences
that are private to this activity.
This simply calls the underlying
{@link #getSharedPreferences(String, int)} method by
passing in this activity's class name as the preferences name. @param
mode Operating mode.
Use {@link #MODE_PRIVATE} for the default
operation, {@link #MODE_WORLD_READABLE} and {@link
MODE_WORLD_WRITEABLE} to control permissions.
@return Returns the single SharedPreferences instance that can be used
to retrieve and modify the preference values.