从 getParams() 调用方法
Posted
技术标签:
【中文标题】从 getParams() 调用方法【英文标题】:Calling method from getParams() 【发布时间】:2016-12-16 12:07:28 【问题描述】:我试图从 getParams() 调用一个方法,但没有任何反应,这是从 getParams() 调用的正确方法还是错误?这个方法getDrugId(drugNames.get(i));
返回一个值,但是当我把它放在 getparams();什么都没有发生。
@Override
protected Map<String, String> getParams() throws AuthFailureError
Map<String, String> params = new HashMap<String, String>();
for (int i = 0; i<drugNames.size(); i++)
params.put("drid["+i+"]",getDrugId(drugNames.get(i)));
params.put("paid", 1+"");
return params;
private String getDrugId(final String drugName)
StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.ROOT + Config.GETRUGSIDS, new Response.Listener<String>()
@Override
public void onResponse(String response)
drID=response.trim();
// Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
, new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
if (error instanceof TimeoutError)
Toast.makeText(getApplicationContext(), "time out Error", Toast.LENGTH_LONG).show();
else if (error instanceof NoConnectionError)
Toast.makeText(getApplicationContext(), "no Connection Error", Toast.LENGTH_LONG).show();
else if (error instanceof AuthFailureError)
Toast.makeText(getApplicationContext(), "Authenticatin Failure Error", Toast.LENGTH_LONG).show();
else if (error instanceof NetworkError)
Toast.makeText(getApplicationContext(), "Network Error", Toast.LENGTH_LONG).show();
else if (error instanceof ServerError)
Toast.makeText(getApplicationContext(), "Server Error", Toast.LENGTH_LONG).show();
else if (error instanceof ParseError)
Toast.makeText(getApplicationContext(), "JASON Parse Error", Toast.LENGTH_LONG).show();
)
@Override
protected Map<String, String> getParams() throws AuthFailureError
Map<String, String> params = new HashMap<String, String>();
params.put("drNAM",drugName);
return params;
;
MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
return drID;
【问题讨论】:
你能分享整个代码吗 【参考方案1】:您正在调用方法getDrugId(drugNames.get(i));
而不对结果做任何事情。
您可能应该像这样使用结果作为索引,对吧?
@Override
protected Map<String, String> getParams() throws AuthFailureError
Map<String, String> params = new HashMap<String, String>();
for (int i = 0; i<drugNames.size(); i++)
params.put("drid["+getDrugId(drugNames.get(i))+"]",drugNames.get(i));
params.put("paid", 1+"");
return params;
【讨论】:
像这样 params.put("drid["+i+"]",getDrugId(drugNames.get(i))); 在将值放入参数映射之前,您正在调用方法 getDrugId(drugNames.get(i));但没有对结果做任何事情,这是为什么呢? 我调用方法“getDrugId(drugNames.get(i)))”从mysql中获取“drugId值”,通过发送药物名称,我将发布完整代码【参考方案2】:getDrugId(drugNames.get(i));
这应该返回一些值,对吧?但是您无处分配方法调用在代码中返回的值,就像它看起来一样。另外,如果您考虑使用此方法调用返回的内容,能否调试并检查 getDrugId(xxx)
返回的内容。
【讨论】:
我已经调试了这个方法,它返回了一个值,但是当我把它放在 getparams() 里面时,什么也没发生 你可以参考这个:***.com/questions/24285544/…和***.com/questions/24284651/…以上是关于从 getParams() 调用方法的主要内容,如果未能解决你的问题,请参考以下文章
Volley 使用 StringRequest 在第一次后不调用 getParams 发送 POST 请求参数