Android - SharedPreferences 的 getString 打印默认值
Android - SharedPreferences's getString prints the default value
我试过保存字符串TRUE
,马上调用查看是否保存成功,结果一直吐0
,这是默认值。我的代码有什么问题?
SharedPreferences settings = getSharedPreferences("PREFS", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("doublePoint", "TRUE");
String doublePoint = settings.getString("doublePoint", "0");
Toast.makeText(getApplicationContext(), doublePoint,Toast.LENGTH_LONG).show();
您必须添加 editor.commit()
才能保存它:
SharedPreferences settings = getSharedPreferences("PREFS", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("doublePoint", "TRUE");
editor.commit(); // This command saves the data
String doublePoint = settings.getString("doublePoint", "0");
Toast.makeText(getApplicationContext(), doublePoint, Toast.LENGTH_LONG).show();
编辑:如 Tyler V
评论中所述,您有两个解决方案:
commit()
:如果新值写入成功,这将保存值和 return true
。该操作在 Main Thread
上执行,如果操作时间过长,您可能会遇到冻结。
apply()
:这会立即将更改保存到内存中 SharedPreferences
,但会启动异步提交到磁盘,您不会收到任何失败通知。
PS:如果您已经忽略 return 值,则可以安全地将 commit()
的任何实例替换为 apply()
。
来源:https://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply()
在 SharedPreferences 中输入值后,您需要添加 commit()
。只需以这种方式添加一个:
SharedPreferences settings = getSharedPreferences("PREFS", 0);
SharedPreferences.Editor editor = settings.edit().commit();
editor.putString("doublePoint", "TRUE");
String doublePoint = settings.getString("doublePoint", "0");
Toast.makeText(getApplicationContext(), doublePoint, Toast.LENGTH_LONG).show();
有关详细信息,请查看此 example。
我试过保存字符串TRUE
,马上调用查看是否保存成功,结果一直吐0
,这是默认值。我的代码有什么问题?
SharedPreferences settings = getSharedPreferences("PREFS", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("doublePoint", "TRUE");
String doublePoint = settings.getString("doublePoint", "0");
Toast.makeText(getApplicationContext(), doublePoint,Toast.LENGTH_LONG).show();
您必须添加 editor.commit()
才能保存它:
SharedPreferences settings = getSharedPreferences("PREFS", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("doublePoint", "TRUE");
editor.commit(); // This command saves the data
String doublePoint = settings.getString("doublePoint", "0");
Toast.makeText(getApplicationContext(), doublePoint, Toast.LENGTH_LONG).show();
编辑:如 Tyler V
评论中所述,您有两个解决方案:
commit()
:如果新值写入成功,这将保存值和 returntrue
。该操作在Main Thread
上执行,如果操作时间过长,您可能会遇到冻结。apply()
:这会立即将更改保存到内存中SharedPreferences
,但会启动异步提交到磁盘,您不会收到任何失败通知。
PS:如果您已经忽略 return 值,则可以安全地将 commit()
的任何实例替换为 apply()
。
来源:https://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply()
在 SharedPreferences 中输入值后,您需要添加 commit()
。只需以这种方式添加一个:
SharedPreferences settings = getSharedPreferences("PREFS", 0);
SharedPreferences.Editor editor = settings.edit().commit();
editor.putString("doublePoint", "TRUE");
String doublePoint = settings.getString("doublePoint", "0");
Toast.makeText(getApplicationContext(), doublePoint, Toast.LENGTH_LONG).show();
有关详细信息,请查看此 example。