2012-03-14 66 views
0

你好所有我是新来的android编程,我有一个问题。 我使用电子书的方向创建了一个具有预设难题的数独应用程序,以解决3个难题。 的事情是,我做了一个谜发生器我的困惑,使他们infinite.Now这里是我的问题: 要保存预先定义的拼图在书中的例子中,你必须使用:在Android中通过引用传递字符串的变量

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

toPuzzleString明显转换拼图转换成字符串(这是之前存储在1名渔政船阵列)

为了加载保存的设置,将继续选项工作,你必须使用:

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

但这WOR ks作为一个预定义的难题,存储在game.class开始时称为“easypuzzle”的私有最终字符串中。当用户点击新游戏时,我的谜题会生成并存储在1维数组中。因此,我必须将我生成的谜题作为参考(这是我认为的),因为我试图通过它,如下所示:

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

当我关闭游戏或只是回去尝试继续我的游戏为我生成一个新的难题(或者我认为是这样)而不是加载保存的。

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

+0

你在哪里储存和加载你的偏好?不知道我是否理解你所得到的,因为你使用easyPuzzle获得的getString,只是使用easyPuzzle作为默认加载,如果它找不到已保存的内容。如同,它也应该适用于你的情况,但听起来不像是在正确的时间保存,或正确加载。 – dule 2012-03-14 19:25:29

回答

0

如上所述,您的谜题可能无法正确保存在偏好。为了检查时,的getString(...)方法改变这样的事情:

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

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

这将导致空要返回如果拼图尚未保存的喜好。这将有助于缩小问题的可能范围。

+0

贺雅家伙感谢您的回答。 嘿,我把保存代码放在 保护void onPause()我的game.class处理所有我的游戏创建等 我认为没有保存你是对的,但我不知道为什么。 @ px3j我想要做的事情,你提到的队友,并把这个代码在我的加载函数,然后我使用一个if语句像你提到的和里面,如果我使用Log.d语句(标签,“游戏未保存” )但我没有在LogCat中得到这个错误信息... 我做错了什么? – user1269830 2012-03-15 21:39:24

+0

要在OnCreate方法更具体的我使用这些命令: 'INT DIFF = getIntent()getIntExtra(KEY_DIFFICULTY,DIFFICULTY_EASY);' 然后 '拼图= getPuzzle(差异);' 然后我的谜题的图。命令 并且在活动重新启动时能够继续: 'getIntent()。putExtra(KEY_DIFFICULTY,DIFFICULTY_CONTINUE);' 我的代码实际上节省了那张拼图在我的onPause方法是这样的休息: '的getPreferences(MODE_PRIVATE).edit()putString(PREF_PUZZLE,toPuzzleString(拼图))。提交();' 我卡在这里,绝望找出什么是错的..提前感谢 – user1269830 2012-03-15 22:55:12