2016-03-08 60 views
1

我有一個叫cup的函數,我想知道爲什麼這段代碼沒有保存i的值。爲什麼當我關閉應用程序時,它會返回i0爲什麼在應用程序重新啓動時將值保存到SharedPreferences中?

public void cup(View view) { 

    SharedPreferences sharedPreferences = getSharedPreferences("Water", Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 

    i=sharedPreferences.getInt("Cup", 0); 

    final int[] imageArray = { 
     R.drawable.waterdrop1, R.drawable.waterdrop2, R.drawable.waterdrop3,   
     R.drawable.waterdrop4, R.drawable.waterdrop5, R.drawable.waterdrop6, 
     R.drawable.waterdrop 
    }; 

    imageView7.setImageResource(imageArray[i]); 

    i++; 
    if (i > 6) { 
     i = 6; 
    } 
    editor.putInt("Cup", i); 
    editor.commit();  
} 

明知杯的onclick功能

+2

你的'i'輸出是什麼,預期的輸出是什麼? –

+0

當我們點擊圖片時,我必須增加1,最大值是6 – Hend

+0

我注意到'i'不是局部變量。還有什麼其他的交互(修改)'我'?你是什​​麼意思「...當我關閉應用程序時將'i'返回到'0'」?在應用程序重新啓動後,我在第一次調用'cup()'時認爲'i'是'0'? – toKrause

回答

0

您的代碼查找SharedPreferences部分正確。我相信你的代碼的另一部分可能沒有顯示出來,可能會導致問題。

這就是說,我建議使用editor.apply()而不是.commit()來寫入後臺處理。

+0

謝謝,但我已經嘗試了editor.apply(),但問題仍然保持不變。 – Hend

+0

正如我所說的問題是在你的代碼中的其他地方。 '.apply()'只是一個建議,而不是解決問題的方法。 – Distwo

相關問題