在Android中通过引用传递字符串变量

时间:2012-03-14 18:53:41

标签: android string pointers reference sudoku

你好所有我是Android编程的新手,我有一个问题。 我使用电子书的指示创建了一个带有预设拼图的数独应用,可以解决3个难题。 问题是我为我的谜题制作了一个拼图生成器,使它们无限。现在我的问题是: 要在本书的示例中保存预定义的谜题,您必须使用:

getPreferences(MODE_PRIVATE).edit().putString(PREF_PUZZLE,
toPuzzleString(puzzle)).commit();

toPuzzleString显然将拼图转换为字符串(之前存储在1维数组中)

要加载已保存的设置以使“继续”选项生效,您必须使用:

puz = getPreferences(MODE_PRIVATE).getString(PREF_PUZZLE,easyPuzzle);

但这适用于在game.class开始时存储在名为“easypuzzle”的私有最终字符串中的预定义拼图。当用户点击New Game时,我的谜题会生成并存储在1维数组中。因此,我必须将生成的谜题作为参考传递(这是我认为的)因为我试图将其传递给它:

getPreferences(MODE_PRIVATE).getString(PREF_PUZZLE,toPuzzleString(puzzle));

当我关闭游戏或者回去尝试继续游戏时,我会为我生成一个新的拼图(或者这就是我认为的那样),而不是加载已保存的拼图。

我做错了什么?任何人都可以帮助我,或告诉我如何将我的谜题作为c ++中的参考传递? 感谢大家的时间,任何帮助将不胜感激....

1 个答案:

答案 0 :(得分:0)

如上所述,您的拼图可能无法正确保存在首选项中。要检查,请将getString(...)方法更改为以下内容:

String puzzleFromPrefs = getPreferences(MODE_PRIVATE).getString(PREF_PUZZLE, null);

if( null == puzzleFromPrefs ) {
  // Then you know that it wasn't saved correctly...
}

如果拼图尚未保存在首选项中,则会返回null。这将有助于缩小问题的范围。