gpt4 book ai didi

java - 两次点击后 Volley onResponse 工作

转载 作者:行者123 更新时间:2023-11-29 19:20:28 27 4
gpt4 key购买 nike

我需要一点帮助:)

我在我的 Android 应用程序上使用 volley,并且我编写了这段代码。

    public String validateCredentials(final String email, final String password) {

StringRequest strReq = new StringRequest(com.android.volley.Request.Method.POST,
LOGIN_URL, new com.android.volley.Response.Listener<String>() {

@Override
public void onResponse(String response) {
try {
JSONObject serverResponse = new JSONObject(response);
Log.d("Result: ", serverResponse.getString("result"));
responseServ = serverResponse.getString("result");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put(email, password);
return params;
}
};
AppController.getInstance().addToRequestQueue(strReq);
return responseServ;
}

当我点击按钮 Log.d("Result: ", serverResponse.getString("result")); 这段代码有效,但是 return responseServ; 是第一次点击时不发送任何数据。

我的按钮点击代码是

Toast.makeText(activity, authModel.validateCredentials(email, password), Toast.LENGTH_SHORT).show();

我该如何解决这个问题?

提前致谢

最佳答案

Volley 是异步的,也就是您进行调用,然后执行回调(Log.d() 部分)。但是您也在同步返回第一次为空的值,并且只有第二次返回值。请记住,它第二次返回第一个结果。

你所要做的就是在 onResponse()

中完成所有工作

PS:如果您想保留 MVP 模式,您可以 - 定义回调 Interface 并将其传递给 validateCredentials(final String email, final String password, final OnLoginComplete callback)然后在 onResponse() callback.loginComplete()

关于java - 两次点击后 Volley onResponse 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42613858/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com