【问题标题】:How to get the value store in SharedPreferences如何在 SharedPreferences 中获取值存储
【发布时间】:2014-01-03 08:02:44
【问题描述】:

我在注册时将 userId 存储在 SharedPreferencesand 中。现在我想访问 SharedPreferences 存储的 UserId 值。直到现在我尝试了这段代码:

prefrence = PreferenceManager.getDefaultSharedPreferences(this);
edit3 = prefrence.edit();
edit3.putInt("user_id", userid);
Log.e("Commit", "SharedPreferences");
edit3.commit();

在下一个活动中,我将使用它进行访问:

prefr = PreferenceManager.getDefaultSharedPreferences(this);

value = prefr.getInt("user_id", "");

我该怎么做?

【问题讨论】:

  • 你遇到了什么错误?
  • 附带说明,Log.e() 应该用于记录错误,而不是像提交首选项值这样的通用调试消息。你最好改用Log.d()
  • @keaukraine yeh..但我个人喜欢 Log.e(),因为它以红色显示消息。
  • 看看这个,[ans][1]。希望这会帮助你。 [1]:stackoverflow.com/a/20897014/793943
  • 感谢我得到了解决方案并解决了

标签: android listview android-intent


【解决方案1】:

您输入一个 INT 并获取一个 STRING...也许这会导致类型转换错误。

我看到你改变了你的代码,以获得一个 int... 错误的方式!

你正在这样做:

value = prefr.getInt("user_id", "");

您应该这样做:

value = prefr.getInt("user_id", 0);

(您不能将 "" 分配给 int。)

以上是有效的如果 user_id 是一个 int如果 user_id 是一个字符串,那么你应该做一个 putString 和一个 getString。喜欢:

edit3.putString("user_id", userid);

然后

value = prefr.getString("user_id", "");

因此您授予必要的类型一致性。

【讨论】:

  • 是的,prefr.getInt("user_id", "") 不应该编译。没有这种重载的getInt() 方法。
【解决方案2】:

尝试改变

prefr.getString("user_id", "");

prefr.getInt("user_id", 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2011-04-07
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    相关资源
    最近更新 更多