我有一个名为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;
但它们都不起作用。
答案 0 :(得分:0)
更好的方法是调试代码以检查您的回调方法是否设置了布尔变量。设置两个断点;首先在你的外部方法中,第二个在你的回调方法中查看所有涉及的变量的值。
答案 1 :(得分:0)
问题在于使用threads.Volley线程在函数返回后将isUserExist设置为true。