我是Android开发的新手。我最近遇到了一个挑战,它基本上是一个ViewPager,你可以在它之间滑动一系列图像。一旦你找到适合你的图像,你点击底部的按钮来存储您的选择并继续下一个活动(下一个活动有一个后退按钮,允许他们返回并选择另一个图像,如果他们想要)。
由于这是一个离线挑战,我选择使用SharedPreferences作为存储此选择的方法。
我的问题是如何一次性存储此信息,如果第二次选择相同的图像,则没有任何反应,但如果选择了新图像,则会覆盖前一个图像。我假设它涉及if ... else语句但不太确定如何设置它。这是我在按钮的onClick方法中的当前代码。
public void thatsMeClick(View view) {
Intent intent = new Intent(MainActivity.this, PhysicalCondition.class);
startActivity(intent);
SharedPreferences sharedPreferences = this.getSharedPreferences("com.tabernaster.challengeone",
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("motivator", viewPager.getCurrentItem());
editor.apply();
int myIntValue = sharedPreferences.getInt("motivator", -1);
Log.i("motivator", Integer.toString(myIntValue));
}
答案 0 :(得分:1)
您需要if
声明。基本上,您将使用已有的int myIntValue = sharedPreferences.getInt("motivator", -1);
代码检查当前值,但是您会将其移到editor.putInt
代码上方。像这样:
int myIntValue = sharedPreferences.getInt("motivator", -1);
if(myIntValue != viewPager.getCurrentItem()){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("motivator", viewPager.getCurrentItem());
editor.apply();
myIntValue = sharedPreferences.getInt("motivator", -1);
}
但是,由于您使用相同的密钥,因此此代码相当多余。 SharedPreferences
将为您处理覆盖。