我保存一个布尔值到我的共享偏好,但是当我重新打开我的应用程序它好好尝试的工作。
下面是代码
public static boolean isSeen;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.b);
milestoneCheck();
}
public void milestoneCheck(){
totalKm = (int) Float.parseFloat(TripsInfo.km.get(TripsInfo.userRank - 1));
Log.d("test", "before" + isSeen);
if (totalKm == 84 && !isSeen) {
updateTrue(true);
Log.d("test", "inside" + isSeen);
isSeen=readFromSharedPrefs();
}
Log.d("test", "after" + isSeen);
}
private void updateTrue(Boolean value) {
SharedPreferences sp = getSharedPreferences("inactivity", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("inactive", value);
editor.apply();
}
public boolean readFromSharedPrefs() {
SharedPreferences sharedPreferencesIn = getSharedPreferences("inactivity", Context.MODE_PRIVATE);
return sharedPreferencesIn.getBoolean("inactive", false);
}
我想我重新打开后是真实的我的应用程序,并再次为假。
因为你忘了上次值从优先分配isSeen
始终是假的。
当你从其他活动去这个它仍然是正确的,因为你宣布它为静态这意味着只要值保持为应用程序的生命。
解:
前如果语句添加isSeen=readFromSharedPrefs();
public void milestoneCheck(){
totalKm = (int) Float.parseFloat(TripsInfo.km.get(TripsInfo.userRank - 1));
isSeen=readFromSharedPrefs();
Log.d("test", "before" + isSeen);
if (totalKm == 84 && !isSeen) {
updateTrue(true);
Log.d("test", "inside" + isSeen);
isSeen=readFromSharedPrefs();
}
Log.d("test", "after" + isSeen);
}