Java 从不同类调用时,Volley响应返回null
我对android开发相当陌生。 我试图通过使用不同的类来调用API并使用全局应用程序类来存储响应,然后在API调用后调用应用程序对象来存储JSON响应,从而模块化当前项目。Java 从不同类调用时,Volley响应返回null,java,android,json,android-volley,Java,Android,Json,Android Volley,我对android开发相当陌生。 我试图通过使用不同的类来调用API并使用全局应用程序类来存储响应,然后在API调用后调用应用程序对象来存储JSON响应,从而模块化当前项目。 然而,当我试图从API类中创建的应用程序对象获取JSON响应时,应用程序崩溃了。在思考代码一段时间后,我尝试在API类本身中检查返回的API响应,一次在onResponse方法中,一次在类结束之前检查。我看到该方法中的API响应非常好,但在调用方法的末尾附近调用时,该响应为null。 为什么我不能从API类本身正确更新JS
然而,当我试图从API类中创建的应用程序对象获取JSON响应时,应用程序崩溃了。在思考代码一段时间后,我尝试在API类本身中检查返回的API响应,一次在
onResponse
方法中,一次在类结束之前检查。我看到该方法中的API响应非常好,但在调用方法的末尾附近调用时,该响应为null。为什么我不能从API类本身正确更新JSON响应?如果可以,怎么做?
提前谢谢三, 下面是我遇到问题的类和方法的代码 APICall.java GlobalData.java MainActivity.java➡️ setUI()
你的电话可能还没打完。执行调用并立即检查数据是否已返回。但是您需要在响应回调中异步处理检查(在您的例子中,它是
response->{data.setResponse(response);}
public class APICall
{
public RequestQueue mRequestQueue;
GlobalData data;
public void call(Application application)
{
String API = application.getResources().getString(R.string.BASE_API);
data = (GlobalData) application;
JsonObjectRequest apiRequest = new JsonObjectRequest(
Request.Method.GET,
API,
null,
response -> {
Log.i("API Response", response.toString());
data.setResponse(response);
},
error -> error.printStackTrace()
);
mRequestQueue.add(apiRequest);
Log.i("API Response recheck", data.getResponse().toString());
}
}
public class GlobalData extends Application
{
private JSONObject response;
public JSONObject getResponse() {
return response;
}
public void setResponse(JSONObject response) {
this.response = response;
}
}
public void setUI()
{
apiCall = new APICall();
apiCall.mRequestQueue = Volley.newRequestQueue(getApplicationContext());
apiCall.call(this.getApplication());
JSONObject apiResponse = data.getResponse();
ImageView memeView = findViewById(R.id.meme_view);
TextView caption = findViewById(R.id.caption);
data = (GlobalData) getApplication();
Log.i("API Response in Main", apiResponse.toString());
}