gpt4 book ai didi

java - SharedPreferences 未按预期工作,无法读取或写入首选项

转载 作者:行者123 更新时间:2023-12-02 07:01:14 25 4
gpt4 key购买 nike

private void init() {

SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);

// SET VALUE RECORD

record = prefs.getInt("record", 0);

prefs.edit().commit();
}

private void setRecord(int i ) {

SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);

if(i > prefs.getInt("record", 0))
prefs.edit().putInt("record", i);

prefs.edit().commit();
}

private int getRecord() {

int rec;

SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);

rec = prefs.getInt("record", 0);

prefs.edit().commit();

Toast toast = Toast.makeText(this, rec+"", Toast.LENGTH_SHORT);
toast.show();

return rec;
}

这段代码应该设置一个 int 并检索它,但它似乎从未设置过它......你能明白为什么吗?

最佳答案

认为最好调用接口(interface) SharedPreferences.Editor 来编辑首选项,而不是使用 prefs.edit().putInt("record", i);。文档说...

Modifications to the preferences must go through an SharedPreferences.Editor object to ensure the preference values remain in a consistent state and control when they are committed to storage.

如果您将 setMethod 更改为以下内容,它应该可以工作...

private void setRecord(int i ) {

SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();

if(i > prefs.getInt("record", 0))
editor.putInt("record", i);

editor.commit();
}

我猜您正在代码中的某个位置调用上述方法 setRecord ,因为我看不到它在您粘贴的代码 fragment 中的任何位置被调用。

关于java - SharedPreferences 未按预期工作,无法读取或写入首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16640873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com