从 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 请求参数

为啥 Volley 不在 getParams() 中发送变量?

从方法中检索调用方法名称[重复]

为啥可以从对象范围之外调用私有方法?

从片段调用活动方法

三个按钮从控制器调用相同的操作方法 - 确定调用哪一个方法