【发布时间】:2012-07-29 16:00:12
【问题描述】:
我正在尝试使用 SharedPreferences 来保存设置。但我似乎无法在我的任何活动之间共享数据。我使用的代码确实可以保存设置,但每个活动似乎都有自己的每个变量版本。
例如。我有一个音频设置活动,用户可以在其中为保存的变量“musicVolume”赋值。如果我关闭游戏并重新加载它,那么音频设置活动会“记住”该值。但是,如果我尝试将该值加载到任何其他活动中,它就不起作用。但是,它们都可以加载和保存自己的同名变量。
这些是我用来保存变量的方法。每个活动中都有这些方法的副本。**
正如我所说,它们可以工作,但它们似乎只能为它们所在的单个活动读写数据。
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();
}
** 我知道有更好的方法可以做到这一点,但我是一个非常新手的oo 程序员。我试着听从另一个线程的建议
但无论我试图把线条放在哪里
protected AppPreferences appPrefs;
appPrefs = new AppPreferences(getApplicationContext());
我收到一种或另一种错误。但最重要的是,阅读线程上的其他 cmets,人们说 SharedPreferences 无论如何都会在同一个包内的活动之间自动共享,这就是我认为它们的工作方式。
【问题讨论】:
-
“某种错误”。不要发布类似的东西。请更明确。告诉我们错误。无论如何,您是否创建了一个名为 AppPreferences 的类?因为它不是 Android 类。
-
你找到答案了吗?
-
正确答案就在下面dude :: here by @Niraj Burde,请标记为正确答案。我试过了