共享首选项不会保存数据

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

我是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();
}

我不知道问题出在哪里,我希望有人可以帮助我

java android sharedpreferences
3个回答
1
投票

改为:

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();立即保存数据


4
投票

不要使用onDestroy()。无法保证它会被调用。如果你在这个方法中设置一个断点,我的猜测就是你认为它没有被调用。


0
投票

正如@Gavin Wright所说,qazxsw poi每次都不会被召唤。将代码移动到qazxsw poi。 onDestroy保证每次离开您的活动时都会被调用。

onPause()
© www.soinside.com 2019 - 2024. All rights reserved.