【发布时间】:2011-12-25 13:06:39
【问题描述】:
编辑: 好的事实证明这段代码正在工作(或多或少)我留在了重置我试图更改的布尔值的行中。不过还是感谢大家的帮助。
当我的应用程序启动时,无法使用 SharedPreferences 读取保存的数组数据。
我的_dPad Boolean 和我的_FreePlay Integer 可以毫无问题地加载、保存和传递到我的_renderer。
当我尝试使用一些数组时,问题就开始了
easteregg[] 现在只有 2 个条目,所以显然我可以将它们转换为单独的变量,但我希望添加更多长度更长的 arras,以便作为一个方便的测试示例。
我已经在代码中记录了似乎发生的情况(easteregg[] 设置似乎没有改变)
读取数据:
// Read saved preferences
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
_renderer._dPad = prefs.getBoolean("_dPad", false); // * works ok *
_renderer._FreePlay = prefs.getInt("_FreePlay", 1); // * works ok *
_renderer.easteregg[0] = prefs.getBoolean("easteregg[0]", false ); // * not working
_renderer.easteregg[1] = true; // * even this is not working
setRenderer(_renderer);
写入数据:
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
// As good a time as any to save current config
save = false ; // don't commit if nothing changed.
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = prefs.edit();
if (_renderer._dPad != prefs.getBoolean("_dPad",false)){ save = true ;
editor.putBoolean("_dPad", _renderer._dPad);}
if (_renderer._FreePlay != prefs.getInt("_FreePlay",1)){ save = true ;
editor.putInt("_FreePlay", _renderer._FreePlay);}
editor.putBoolean("easteregg[0]", _renderer.easteregg[0]);
editor.putBoolean("easteregg[1]", _renderer.easteregg[1]);
if (save == true){editor.commit();}
}
在 .renderer 类中
// START SAVE DATA
public boolean _dPad ; // false no Virtual Pad *Works Fine*
public int _FreePlay ; // 1 = no free play *Works Fine*
public boolean[] easteregg = new boolean[2]; *Values don't load or save*
//public boolean easteregg[]; // tried this first *CAUSES CRASH*
// END SAVE DATA
我必须将数组转换为字符串吗?我不知道如何更改它们。
【问题讨论】:
-
布尔值默认为
false,如果没有另外声明。你确定你在某个时候改变了这个值吗?在保存之前和检索之后尝试打印日志语句。 -
好吧,即使我有“_renderer.easteregg[1] = true;”,他们仍然保持状态。我知道它没有在代码的其他地方更改,因为如果我更改“public boolean[] easteregg = new boolean[2];”到 "public boolean easteregg[]; ={true,true}" 那么这些值肯定是真的。
标签: android arrays string sharedpreferences