我可以使用一个按钮将数据保存在 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 中,然后使用另一个按钮来检索它吗?

改造无法将新令牌设置为请求标头

将 UIView 中可拖动按钮的位置保存到核心数据中

保存、编辑、删除按钮的功能

如何将数据从 listview 单选按钮保存到 SQLite?

永远保存网页的所有效果[关闭]