【问题标题】:Saving and retrieving the JSON response in android SharedPreferences在 android SharedPreferences 中保存和检索 JSON 响应
【发布时间】:2017-08-15 19:43:05
【问题描述】:

我是一个新手,我正在开发具有登录活动的 android 应用程序,当用户成功登录时,它会返回以下 JSON 响应

[{
    "id" : 3,
    "username" : "test"
}]

我想将“id”存储在SharedPreferences 中并在整个应用程序中使用它。

这是我的登录活动代码:

JSONArray jArray = new JSONArray(s);
for (int i = 0; i < jArray.length(); i++) {
    JSONObject post = jArray.optJSONObject(i);
    user_id = post.getString("id");
    SharedPreferences sp=getApplicationContext().getSharedPreferences("usersinfos", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    editor.putString("userid", user_id );
    editor.commit();
}

这是我的个人资料活动

SharedPreferences sp = getActivity().getSharedPreferences("usersinfos",Context.MODE_PRIVATE);
String user_id= sp.getString("userid", "");
Toast.makeText(getActivity(),user_id , Toast.LENGTH_LONG).show();

Toast 给出的结果是空的。

【问题讨论】:

  • 您是否确认您实际保存了您认为保存的内容?也许你应该为保存部分添加一个 toast 以确保。
  • 先尝试在 SharedPreferences 中手动保存一些东西,而不是从 JSONObject 中获取它。然后,看看你是否在 Toast 中看到它。这样你就可以看到问题是解析 JSON 字符串还是 SharedPreferences 的问题。
  • 我试过了,效果很好
  • 你能在这行显示s的值吗? JSONArray jArray = new JSONArray(s);
  • 是的,我可以得到 s 的值

标签: java android json sharedpreferences


【解决方案1】:

id不是字符串,应该是“3”才算字符串。
尝试使用 putIntgetInt 保存整数

【讨论】:

  • 你改变了这条线吗? user_id = post.getString("id");。使用调试器,看看它是否返回值
  • 使用调试器告诉我们你得到了什么
  • 抱歉,在调试器中没有显示任何关于共享首选项的信息
  • 调试这行user_id = post.getInt("id");,看看是否设置了正确的值
  • 抱歉,单行调试失败
猜你喜欢
  • 2016-05-27
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
相关资源
最近更新 更多