[英]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.