簡體   English   中英

共享首選項不會保存數據

[英]Shared Preferences won't save the data

我是Android新手,對Java有點新手(不要問)

我想使用共享首選項,直到今天為止一切正常,但是在我的新項目中,共享首選項將無法保存數據。

在我的onCreate方法中,我有以下代碼:

    preferences = this.getSharedPreferences(KEY, MODE_PRIVATE);
    editor = preferences.edit();
    preferences.getFloat(TESTEPFLOAT, 0);
    preferences.getFloat(TESTCURRENTEPFLOAT, 0);
    preferences.getInt(TESTLEVEL, 1);

在我的onDestroy方法中:

@Override
public void onDestroy(){
    super.onDestroy();
    editor.putInt(TESTLEVEL, level);
    editor.putFloat(TESTEPFLOAT, ep);
    editor.putFloat(TESTCURRENTEPFLOAT, currentEP);
    editor.apply();
}

我不知道問題出在哪里,希望有人能幫助我

不要使用onDestroy()。 無法保證會被調用。 如果您在該方法中設置了一個斷點,我猜是您認為沒有被調用時。

更改為此:

preferences = this.getSharedPreferences(KEY, MODE_PRIVATE);
preferences.getFloat(TESTEPFLOAT, 0);
preferences.getFloat(TESTCURRENTEPFLOAT, 0);
preferences.getInt(TESTLEVEL, 1);

保存數據:

@Override
    protected void onPause() {
        super.onPause();
    preferences = this.getSharedPreferences(KEY, MODE_PRIVATE);
        editor = preferences.edit();
        editor.putInt(TESTLEVEL, level);
        editor.putFloat(TESTEPFLOAT, ep);
        editor.putFloat(TESTCURRENTEPFLOAT, currentEP);
        editor.apply();
}

或使用editor.commit(); 立即保存數據

就像@Gavin Wright所說的那樣, onDestroy不會每次都被調用。 將代碼移到onPause() 保證每次離開活動時都會調用onPause()

@Override
public void onPause(){
    super.onPause();
    editor.putInt(TESTLEVEL, level);
    editor.putFloat(TESTEPFLOAT, ep);
    editor.putFloat(TESTCURRENTEPFLOAT, currentEP);
    editor.apply();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM