我可以使用一个按钮将数据保存在 sharedPreferences 中,然后使用另一个按钮来检索它吗?
Posted
技术标签:
【中文标题】我可以使用一个按钮将数据保存在 sharedPreferences 中,然后使用另一个按钮来检索它吗?【英文标题】:Can i use a button to save data in sharedPreferences and another to retrieve it? 【发布时间】:2013-02-22 01:09:41 【问题描述】:假设我有一个希望用户查看的 TextView,然后点击保存按钮。然后点击显示按钮并将文本输入到editText字段中。
这是我正在尝试的,但它不起作用
从 TextView 保存信息...
case R.id.save:
SharedPreferences firsttunesettings = getSharedPreferences("tune1", 0);
SharedPreferences.Editor editor = firsttunesettings.edit();
editor.putString("rh1", rh1.getText().toString());
editor.commit();
然后在 EditText 中显示数据....
case R.id.display:
SharedPreferences firsttunesettings = getSharedPreferences("tune1", 0);
rh1.setText(firsttunesettings.getString("rh1", ""));
代码没有抛出任何错误,它似乎没有做任何事情。任何帮助表示赞赏。谢谢。
【问题讨论】:
【参考方案1】:你需要这个:
SharedPreferences firsttunesettings = getApplicationContext().getSharedPreferences("tune1", 0);
and
SharedPreferences firsttunesettings = getApplicationContext().getSharedPreferences("tune1", 0);
rh1.setText(firsttunesettings.getString("rh1", ""));
SharedPreferences 需要应用程序的上下文。
其余的代码对我来说看起来不错。
编辑: 尝试将您的值首先保存在这样的临时变量上:
String temp = firsttunesettings.getString("rh1", "");
然后:
rh1.setText(temp);
由于您发布的代码应该可以正常工作,因此我的想法已经用完了。
编辑#2:
我还声明了我在共享首选项中使用的变量,如下所示:
private static final String RH1 = "RH1";
并像这样使用它:
editor.putString(RH1, rh1.getText().toString());
和
String temp = firsttunesettings.getString(RH1, "");
这应该可以解决问题。
【讨论】:
感谢您的快速回复!感觉就像是一个简单的问题,但是更改那里的代码似乎并没有使它的行为有所不同。如果 EditText 和 Textview 是不同的活动,会有什么不同吗? 保存按钮似乎确实做了一些事情,但这只是基于点击保存后应用信息区域中的“数据”从 48kb 增加到 64kb 我已经编辑了答案,那么在设置值和正确设置值时,您是否将上下文放在偏好的两个部分? editor.putString("rh1", rh1.getText().toString());你是如何声明你的变量“rh1”的?? 谢谢。是的,我将在新答案中重新发布我的新代码...等等,在 OP 中编辑以上是关于我可以使用一个按钮将数据保存在 sharedPreferences 中,然后使用另一个按钮来检索它吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用一个按钮将数据保存在 sharedPreferences 中,然后使用另一个按钮来检索它吗?