SharedPreferences if语句只存储一个选项

时间:2016-02-23 15:59:35

标签: java android

我是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));

}

1 个答案:

答案 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将为您处理覆盖。