Java 仅存储一个选项的SharedReferences if语句
我对Android开发相当陌生。我最近遇到了一个挑战,基本上是一个带有一系列图像的ViewPager,你可以在它们之间滑动。找到适合自己的图像后,单击底部的按钮存储选择并继续下一个活动(下一个活动有一个后退按钮,允许他们返回并选择另一个图像,如果他们愿意) 由于这是一个离线挑战,我选择使用SharedReferences作为存储此选择的一种方式 我的问题是,我如何将此信息存储一次,如果第二次选择相同的图像,则不会发生任何事情,但如果选择了新图像,则会覆盖上一个图像。我假设它包含if…else语句,但不太确定如何设置它。下面是我当前在按钮的onClick方法中的代码Java 仅存储一个选项的SharedReferences if语句,java,android,Java,Android,我对Android开发相当陌生。我最近遇到了一个挑战,基本上是一个带有一系列图像的ViewPager,你可以在它们之间滑动。找到适合自己的图像后,单击底部的按钮存储选择并继续下一个活动(下一个活动有一个后退按钮,允许他们返回并选择另一个图像,如果他们愿意) 由于这是一个离线挑战,我选择使用SharedReferences作为存储此选择的一种方式 我的问题是,我如何将此信息存储一次,如果第二次选择相同的图像,则不会发生任何事情,但如果选择了新图像,则会覆盖上一个图像。我假设它包含if…else语句
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));
}
您需要一个
if
语句是正确的。基本上,您将使用相同的int myIntValue=sharedPreferences.getInt(“激励因素”,-1)检查当前值代码>您已经拥有的代码,但是您会将其移动到编辑器.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);
}
但是,由于您使用的是同一个密钥,因此此代码相当冗余SharedReferences
将为您处理覆盖操作。由于SharedReferences不能包含重复的密钥,因此当前设置在您选择同一图像时正确地“不起作用”,在您选择其他图像时正确地“覆盖”。感谢您的回复,我非常感谢。是的,如果声明不是真的必要谢谢你们的回复,我真的很感激!