gpt4 book ai didi

android - SharedPreferences 不会在 Activity 之间共享

转载 作者:行者123 更新时间:2023-12-01 21:15:30 25 4
gpt4 key购买 nike

我正在尝试使用 SharedPreferences 来保存设置。但我似乎无法在我的任何 Activity 之间共享数据。我正在使用的代码确实能够保存设置,但每个 Activity 似乎都有自己的每个变量版本。

举个例子。我有一个音频设置 Activity ,用户可以在其中为保存的变量“musicVolume”赋予值。如果我关闭游戏并重新加载它,则音频设置 Activity 会“记住”该值。但如果我尝试将该值加载到任何其他 Activity 中,它就不起作用。但是,它们都可以加载和保存自己的同名变量。

这些是我用来保存变量的方法。每个 Activity 中都有每个方法的副本。**

正如我所说,它们可以工作,但它们似乎只能读取和写入它们所在的单个 Activity 的数据。

public void SavePreferences(String key, float value) {
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putFloat(key, value);
editor.commit();
}

public void LoadPreferences() {
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
musicVolume = sharedPreferences.getFloat("musicVolume", (float)0.123);
soundEffectsVolume = sharedPreferences
.getFloat("soundEffectsVolume", (float)0.123);
}

public void ClearPreferences() {
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
}

** 我知道有更好的方法来做到这一点,但我是一个非常新手的面向对象程序员。我尝试遵循另一个线程的建议

Android Shared Preferences

但是无论我试图在哪里放置线条

protected AppPreferences appPrefs;
appPrefs = new AppPreferences(getApplicationContext());

我收到这样或那样的错误。但最重要的是,阅读该线程上的其他评论,人们说 SharedPreferences 无论如何都会在同一包内的 Activity 之间自动共享,这就是我认为它们的工作方式。

最佳答案

您正在使用getPreferences(MODE)。请改用 getSharedPreferences("PREF_NAME", MODE)。这样,您将为特定首选项提供一个名称,然后您可以从您想要的任何 Activity 中通过其名称(此处为 PREF_NAME)来调用它。

//------get sharedPreferences

SharedPreferences pref = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE);

//-------get a value from them

pref.getString("NAME", "Android");

//--------modify the value

pref.edit().putString("NAME", "Simone").commit();

//--------reset preferences

pref.edit().clear().commit();

关于android - SharedPreferences 不会在 Activity 之间共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58879411/

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