大佬教程收集整理的这篇文章主要介绍了android – 如何使用EventBus调用Call Type,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我提出了一个解决方案 – 我在NetworkReqest中添加了CallType但是我无法通知活动/片段有关网络调用,因为post()只接受一个参数.
这是相关的代码 –
public class Networkrequest { EventBus eventBus = EventBus.getDefault(); public void StringParamrequest(String url,final Map<String,String> params,String callTypE) { Stringrequest jsonObjrequest = new Stringrequest(request.Method.POST,url,new Response.Listener<String>() { @Override public void onResponse(String responsE) { eventBus.post(responsE); } },new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d("volley","Error: " + error.getmessage()); eventBus.post(error); } }) { @Override public String getBodyContentType() { return "application/x-www-form-urlencoded; charset=UTF-8"; } @Override protected Map<String,String> getParams() throws AuthFailureError { Map<String,String> param = params; return param; } }; SkillSchoolApplication.get().addTorequestQueue(jsonObjrequest); } public void Stringrequest(String url,String callTypE) { Stringrequest Stringrequest = new Stringrequest(url,new Response.Listener<String>() { @Override public void onResponse(String responsE) { eventBus.post(responsE); } },new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); SkillSchoolApplication.get().addTorequestQueue(Stringrequest); } }
片段/活动内部的方法这里出现问题,当从一个请求获得响应后,我触发另一个请求,该请求取决于第一个请求的响应
@Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(String responsE) { Log.d(tag,responsE); Boolean isCourseAvaible = false; if (!isCourseAvaiblE) { isCourseAvaible = true; List<CoursesDTO> coursesDTOs = AppMgr.coursesMgr(responsE); String[] ids = new String[0]; String id; if (coursesDTOs != null) { ids = new String[coursesDTOs.size()]; for (int i = 0; i < coursesDTOs.size(); i++) { ids[i] = coursesDTOs.get(i).getListId(); } } id = TextUtils.join(",",ids); Map<String,String> map = new HashMap<>(); map.put("part","snippet,contentDetails"); map.put("playlistId",id); map.put("key",AppConstants.YOUTUBE_KEY); Networkrequest networkrequest = new Networkrequest(); networkrequest.StringParamrequest("some url",map); } else { Log.d(tag,responsE); } } @Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(VolleyError error) { Log.d(tag,error.toString()); Toast.makeText(getActivity(),"Something went wrong " + error.toString(),Toast.LENGTH_SHORT).show(); }
如何区分onEvent()中的callType.需要一些指导.非常感谢.
class NetworkResponse() { public String callType; public String response; }
当您收到响应时,分配NetworkResponse并使用响应和呼叫类型填充它并将其发布到事件总线.
@Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(NetworkResponse networkResponsE) { if(networkResponse.callType.equals(Call_1)) { // ... } else if (networkResponse.callType.equals(Call_2)) { // ... } }
以上是大佬教程为你收集整理的android – 如何使用EventBus调用Call Type全部内容,希望文章能够帮你解决android – 如何使用EventBus调用Call Type所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。