2012-03-14 68 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