当应用程序重新打开SharedPreferences不工作

问题描述 投票:0回答:1

我保存一个布尔值到我的共享偏好,但是当我重新打开我的应用程序它好好尝试的工作。

下面是代码

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);
}

我想我重新打开后是真实的我的应用程序,并再次为假。

android sharedpreferences
1个回答
2
投票

因为你忘了上次值从优先分配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);

}
© www.soinside.com 2019 - 2024. All rights reserved.