Android 未提交到持久性存储的值
有人能帮我看看我忽略了什么吗 问题是,这些值不会提交到持久性存储-Android 未提交到持久性存储的值,android,string,sharedpreferences,commit,Android,String,Sharedpreferences,Commit,有人能帮我看看我忽略了什么吗 问题是,这些值不会提交到持久性存储-.commit()返回true和所有内容,但这些值根本不存在 public void onPause() { super.onPause(); if (timerStarted) { // Save the values settings.edit().putInt(getString(beer).toString(), savedVal_beer); se
.commit()
返回true和所有内容,但这些值根本不存在
public void onPause() {
super.onPause();
if (timerStarted) {
// Save the values
settings.edit().putInt(getString(beer).toString(), savedVal_beer);
settings.edit().putInt(getString(lightBeer).toString(), savedVal_ltBeer);
settings.edit().putInt(getString(strongBeer).toString(), savedVal_stBeer);
settings.edit().putInt(getString(wine).toString(), savedVal_wine);
settings.edit().putInt(getString(fortifiedWine).toString(), savedVal_fortWine);
settings.edit().putInt(getString(liqeur).toString(), savedVal_liqeur);
settings.edit().putInt(getString(spirits).toString(), savedVal_spirits);
if (counterStarted) {
settings.edit().putString(getString(R.string.key_counter_lastTypeUsed), selectedType);
}
settings.edit().commit();
if (settings.edit().commit()) {
Toast.makeText(this, "saved", Toast.LENGTH_SHORT).show();
}
}
}
我在最后添加了一个断点,并使用调试器验证要存储的变量是否确实存在,但是,当我使用adb拉取sharedPrefs xml文件时,没有任何值被实际保存
timerStarted
和counterStarted
都是正确的,它们应该是正确的。您只需使用一个调用。并删除对的双重调用
你只能打一个电话。并删除对的双重调用
多个
settings.edit()
调用是否相互干扰,因此不会保存任何内容?如果是这样,那么最好为整个类全局定义一个编辑器对象?但是我没有双重调用commit()
——最后一个调用只是为了检查它是否成功……是的,准确地说edit()
每次都会清除编辑器中存储的值,因此必须只调用一次。而且,如果调用两次commit()
,它将计算两次。如果您将其放入if()
s中,它仍将进行计算。多个设置.edit()
调用是否相互干扰,因此不会保存任何内容?如果是这样,那么最好为整个类全局定义一个编辑器对象?但是我没有双重调用commit()
——最后一个调用只是为了检查它是否成功……是的,准确地说edit()
每次都会清除编辑器中存储的值,因此必须只调用一次。而且,如果调用两次commit()
,它将计算两次。如果将它放在if()
s中,它仍然会计算。
Editor editor = settings.edit();
editor.putInt(getString(beer).toString(), savedVal_beer);
editor.putInt(getString(lightBeer).toString(), savedVal_ltBeer);
editor.putInt(getString(strongBeer).toString(), savedVal_stBeer);
editor.putInt(getString(wine).toString(), savedVal_wine);
editor.putInt(getString(fortifiedWine).toString(), savedVal_fortWine);
editor.putInt(getString(liqeur).toString(), savedVal_liqeur);
editor.putInt(getString(spirits).toString(), savedVal_spirits);
if (counterStarted) {
editor.putString(getString(R.string.key_counter_lastTypeUsed), selectedType);
}
if (editor.commit()) {
Toast.makeText(this, "saved", Toast.LENGTH_SHORT).show();
}