无法通过使用 Volley 库中的 Intent 从片段中移动下一个 Activity
Posted
技术标签:
【中文标题】无法通过使用 Volley 库中的 Intent 从片段中移动下一个 Activity【英文标题】:Unable to move on next Activity from fragment by using Intent in Volley Library 【发布时间】:2017-11-19 05:33:54 【问题描述】:我正在尝试使用 volley 库登录。我使用 SharedPrefrences 来存储用户名、电子邮件、手机。当我使用正确的手机号码时。和密码。 Toast 正在生成登录成功,但无法将登录片段移动到仪表板活动。
这是登录方法的代码
private void login(String login_url, final String getLoginMob, final String getLoginPwd)
//Progress Dialog code
final Dialog dialog =new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.loading_dialog);
dialog.setCancelable(false);
dialog.show();
RequestQueue queue = Volley.newRequestQueue(getActivity());
StringRequest postrequest = new StringRequest(Request.Method.POST, login_url, new Response.Listener<String>()
@Override
public void onResponse(String response)
dialog.dismiss();
try
JSONObject jsonObject = new JSONObject(response);
if (jsonObject.getBoolean("success") == true )
Toast.makeText(getActivity(),jsonObject.getString("message"),Toast.LENGTH_LONG).show();
JSONObject jsonObjectInfo=jsonObject.getJSONObject("User");
sharedPrefrence_main.setName(jsonObjectInfo.getString("name"));
sharedPrefrence_main.setEmail(jsonObjectInfo.getString("email"));
sharedPrefrence_main.setMobile_no(jsonObjectInfo.getString("mobile"));
Intent intent=new Intent(getActivity(), Dashboard.class);
startActivity(intent);
else if (jsonObject.getBoolean("success") == false)
Toast.makeText(getActivity(), jsonObject.getString("message"), Toast.LENGTH_LONG).show();
else
Toast.makeText(getActivity(),"Entries are wrong",Toast.LENGTH_LONG).show();
catch (JSONException e)
e.printStackTrace();
, new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
error.printStackTrace();
dialog.dismiss();
)
@Override
protected Map<String, String> getParams()
Map<String,String> param=new HashMap<String, String>();
param.put("mobile_email", getLoginMob);
param.put("password", getLoginPwd);
return param;
;
int socketTimeout = 30000;
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
postrequest.setRetryPolicy(policy);
queue.add(postrequest);
JSON 响应
"success":"true","message":"登录成功","User":["name":"satishkanaujiya","email":"*****@gmail.com" ,"手机":"901589****"]
【问题讨论】:
你应该使用 getActivity().startActivity(intent) @Sandeepdhiman 我试过但没有帮助。 【参考方案1】: runOnUiThread(new Runnable()
@Override
public void run()
//Type your Intent code here
);
或
使用 LocalBraodcastManager: 使用此链接:how to use LocalBroadcastManager?
【讨论】:
【参考方案2】:这是一个数组,我将其视为对象。最后我通过以下代码纠正了我的错误。
JSONArray jsonArrays=jsonObject.getJSONArray("User");
for(int i=0;i<jsonArrays.length();i++)
JSONObject jsonObject1=jsonArrays.getJSONObject(i);
sharedPrefrence_main.setName(jsonObject1.getString("name"));
sharedPrefrence_main.setEmail(jsonObject1.getString("email"));
sharedPrefrence_main.setMobile_no(jsonObject1.getString("mobile"));
【讨论】:
以上是关于无法通过使用 Volley 库中的 Intent 从片段中移动下一个 Activity的主要内容,如果未能解决你的问题,请参考以下文章
Volley 库中是不是有任何限制来获取 Android 上的数据数量?