2016-03-08 62 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

相关问题