Java 安卓工作室-Can';无法读取首选项设置

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

我正在尝试使用SharedReference保存用户的语言。MainActivity是我的主要活动,SettingsActivity是我询问和保存用户语言的地方

保存:

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.