从Android

时间:2017-07-04 18:13:45

标签: java android android-volley

我有一个名为isUserExist的函数。此函数检查用户是否存在此数据库的电子邮件地址。

在stringrequest中,我设置了isUserExist变量" true" .fnd的func,func返回isUserExist。

问题是,即使我在字符串request中将其设置为true,它总是返回false。在if语句中将其设置为true。

在它的类声明中:

boolean isUserExist;

功能是:

private boolean isUserExist()
{

    StringRequest strReq = new StringRequest(Request.Method.POST,
            AppConfig.URL_USER_EXIST, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {

            try {
                JSONObject jObj = new JSONObject(response);
                boolean error = jObj.getBoolean("error");
                if (error) {
                    // setting isUserExist = true
                    isUserExist = true;
                    //Log.w("debug1",String.valueOf(isUserExist);) 
                    //returns true;

                } else {

                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {

        }
    }) {

        @Override
        protected Map<String, String> getParams() {
            // Posting params to register url
            Map<String, String> params = new HashMap<String, String>();
            params.put("email", mail);

            return params;
        }

    };
    AppController.getInstance().addToRequestQueue(strReq);
    //Log.w("debug2",String.valueOf(isuserExist));
    //returns false
    return isUserExist;
}

到目前为止我尝试了什么:

我搜索并找到了这些想法。 1)使其成为static 2)声明boolean result[] = new boolean[1];并返回函数返回结果[0],我在字符串请求中将其赋值为true。 3)将isUserExist声明为局部变量.boolean isUserExist = false;在func的开始。 4)在firs decleration中指出它是:boolean isUserExist = false而不是boolean isUserExist;

但它们都不起作用。

2 个答案:

答案 0 :(得分:0)

更好的方法是调试代码以检查您的回调方法是否设置了布尔变量。设置两个断点;首先在你的外部方法中,第二个在你的回调方法中查看所有涉及的变量的值。

答案 1 :(得分:0)

问题在于使用threads.Volley线程在函数返回后将isUserExist设置为true。