【问题标题】:Passing a string's variable by reference in Android在Android中通过引用传递字符串的变量
【发布时间】:2012-03-14 18:53:40
【问题描述】:

你好我是 android 编程的新手,我有一个问题。 我使用电子书的说明创建了一个带有 3 个难度的预设谜题的数独应用程序。 问题是我为我的谜题制作了一个谜题生成器,使它们变得无限。现在这是我的问题: 要在本书的示例中保存预定义的谜题,您必须使用:

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

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

为了加载您保存的设置以使“继续”选项起作用,您必须使用:

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

但这适用于在 game.class 开始时存储在名为“easypuzzle”的私有最终字符串中的预定义谜题。当用户单击新游戏时,我的谜题会生成并存储在一个一维数组中。因此,我必须将生成的谜题作为参考传递(这就是我的想法),因为我试图像这样传递它:

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

当我关闭游戏或只是返回并尝试继续我的游戏时,我会为我生成一个新谜题(或者这就是我认为的),而不是加载已保存的谜题。

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

【问题讨论】:

  • 您在哪里保存和加载您的首选项?不确定我是否理解您的意思,因为您在上面使用easyPuzzle 获得的getString 只是使用easyPuzzle 作为默认加载,如果它找不到已经保存的内容。例如,它也应该适用于您的情况,但听起来不像是在正确的时间保存或正确加载。

标签: android string pointers reference sudoku


【解决方案1】:

如上所述,您的拼图可能未正确保存在首选项中。为了检查,将 getString(...) 方法更改为如下所示:

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

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

如果拼图尚未保存在首选项中,这将导致返回 null。这将有助于缩小问题所在。

【讨论】:

  • 大家好,感谢您的回答。嘿dule我把保存代码放在我的game.class的受保护的void onPause()中,它处理我所有的游戏创建等。我认为没有任何东西被保存你是对的,但我不知道为什么。 @px3j 我正在尝试做你提到的事情,并将这段代码放在我的加载函数中,然后我使用你提到的 if 语句,在 if 语句中我使用 Log.d(TAG,"Game not saved") 但是我在 LogCat 中没有收到此错误消息...我做错了吗?
  • 为了在 OnCreate 方法中更具体,我使用这些命令:int diff = getIntent().getIntExtra(KEY_DIFFICULTY, DIFFICULTY_EASY); 然后puzzle = getPuzzle(diff); 然后我的拼图的视图命令如果活动重新启动,则能够继续:getIntent().putExtra(KEY_DIFFICULTY, DIFFICULTY_CONTINUE); 其余的我的实际保存难题的代码在我的 OnPause 方法中,如下所示:getPreferences(MODE_PRIVATE).edit().putString(PREF_PUZZLE, toPuzzleString(puzzle)).commit(); 我被困在这里,不顾一切地想找出问题所在..提前谢谢
猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 2010-12-24
  • 2010-11-19
  • 2018-12-07
  • 2014-08-11
  • 2017-07-25
  • 2016-07-05
  • 1970-01-01
相关资源
最近更新 更多