Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未提交到持久性存储的值_Android_String_Sharedpreferences_Commit - Fatal编程技术网

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