2017-08-15 50 views
0

我是一个新手,我正在开发具有登录活动,当用户成功登录,它返回以下JSON响应保存和检索在Android的SharedPreferences JSON响应

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

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

这里是我的登录活动代码:

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(); 

敬酒给出结果是空的。

+0

您是否确定您实际上保存了您认为保存的内容?也许你应该为保存部分添加敬酒以确保。 –

+0

首先尝试手动将某些内容保存到SharedPreferences中,然后从JSONObject中获取它。然后,看看你是否在烤面包中看到它。这样你会看到问题是解析JSON字符串还是问题是SharedPreferences。 – alayor

+0

我试过这个效果很好 –

回答

0

该id不是一个字符串,它应该是“3”是一个字符串。
尝试保存一个整数与putIntgetInt

+0

我试过你的代码,但结果仍然相同 –

+0

你改变了这条线吗? 'user_id = post.getString(“id”);'。使用调试器并查看它是否返回值 –

+0

是的,我将其更改为'user_id = post.getInt(“id”);' –