[英]Setting value of class variable from String Request Volley in Android
我有一個名為isUserExist的函數。此函數檢查用戶是否存在於具有此電子郵件地址的數據庫中。
在stringrequest中,我將isUserExist變量設置為“ true”。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];
並且函數返回結果result [0],我在String Request中確定它為true。 3)將isUserExist聲明為局部變量.boolean isUserExist = false; 在功能的開始。 4)在第一個decleration判斷中,它是: boolean isUserExist = false
而不是boolean isUserExist;
但是它們都不起作用。
更好的方法是調試代碼,以檢查您的回調方法是否設置了布爾變量。 設置兩個斷點; 首先在您的外部方法中,其次在您的回調方法中,以查看所有涉及的變量的值。
問題在使用線程.Volley線程在函數返回后將isUserExist設置為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.