gpt4 book ai didi

java - Android Studio - 无法读取首选项设置

转载 作者:太空狗 更新时间:2023-10-29 16:13:12 25 4
gpt4 key购买 nike

我正在尝试使用 SharedPreference 保存用户的语言。 MainActivity 是我的主要 Activity ,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");

使用这段代码,我可以成功地保存和读取相同的 Activity (SettingsActivity),但是当我返回到我的主要 Activity 时,我无法读取。

我正在使用这段代码从我的主要 Activity 中读取,但它总是返回“0”。

private SharedPreferences preferenceSettings;
private SharedPreferences.Editor preferenceEditor;
private static final int PREFERENCE_MODE_PRIVATE = 0;
private static String Lang = "0";

preferenceSettings = getPreferences(PREFERENCE_MODE_PRIVATE);
Lang = preferenceSettings.getString("language", "0");

我做错了什么?我控制这些线路将近 1 小时,但没有发现任何错误。

最佳答案

发生这种情况是因为您正在使用 getPreferences(PREFERENCE_MODE_PRIVATE)

返回由 Activity 的类名 保存的首选项,如 here 所述:

Retrieve a SharedPreferences object for accessing preferences that are private to this activity. This simply calls the underlying getSharedPreferences(String, int) method by passing in this activity's class name as the preferences name.

因此,当您在 SettingsActivity 中保存首选项时,它会以名称 "SettingsActivity"

保存

但是当您在 MainActivity 中获取 prefs 时,它会返回保存在名称 "MainActivity"

下的 prefs

所以,你应该使用 getSharedPreferences (String name, int mode)取而代之的是同名方法。

关于java - Android Studio - 无法读取首选项设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38145589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com