public class responseListener implements Response.Listener<JSONObject>{
public String status;
@Override
public void onResponse(JSONObject response) {
try {
status = response.getString("status");
Log.d("Inside onResponse() ", status);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
private String getImageStatus(String url){
responseListener response_listener = new responseListener();
JsonObjectRequest jsonRequest = new JsonObjectRequest
(Request.Method.GET, url, null, response_listener, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
String status=response_listener.status;
Volley.newRequestQueue(MainActivity.this).add(jsonRequest);
Log.d("In getImageStatus():", status);
return status;
}
logcat的屏幕:如何在方法內創建對象時訪問參數的變量?
06-17 10:07:57.231 15799-15849/com.example.user.streetviewman E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.example.user.streetviewman, PID: 15799
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.d(Log.java:143)
at com.example.user.streetviewman.MainActivity$LongOperation.getImageStatus(MainActivity.java:194)
at com.example.user.streetviewman.MainActivity$LongOperation.doInBackground(MainActivity.java:85)
at com.example.user.streetviewman.MainActivity$LongOperation.doInBackground(MainActivity.java:62)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761) 06-17 10:07:57.396 15799-15799/com.example.user.streetviewman D/yo myannn inside:: ZERO_RESULTS
Log.d( 「內部onResponse()」,地位)在logcat中的最後一行返回ZERO_RESULTS,這是我想要的答覆,但Log.d( 「在getImageStatus」中,status)返回null,我得到錯誤:「java.lang.NullPointerException:println需要一條消息」。 我能做些什麼來獲得Log.d(「在getImageStatus」,狀態)返回ZERO_RESULTS而不是null?
所有這些方法是一類LongOperation延伸的AsyncTask內部。我從doInBackground()LongOperation的方法調用getImageStatus()。
另一個...響應準備在onResponse不及早(在沒有回報的從getImageStatus時間) – Selvin
Selvin請你能幫助+?接下來我應該做什麼? –