2017-06-17 4 views
-3
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( "InImageStatus"、status)を取得してnullの代わりにZERO_RESULTSを返すにはどうすればよいですか?

すべてのこれらの方法は、AsyncTaskを拡張するクラスLongOperation内側にあります。私はgetImageStatus()からdoInBackground() LongOperationメソッドを呼び出しています。

+1

まだ応答がありません。応答は早い(getImageStatusからの戻り時ではありません) – Selvin

+0

+セルヴィン助けてください。私は次に何をすべきですか? –

答えて

0

"status"という名前の2つの文字列があります。 2番目の名前を変更すると、おそらくどちらを使用するのか分かりません

+0

ありがとうが、私はそれが問題だとは思わない。私はあなたの提案を試みたが、うまくいかなかった。 –

+0

最初の「ステータス」文字列をpublicにしたので、String s = status; Stringの代わりにstatus = response_listener.status; Log.dステートメントの "status"を "s"に変更してください – CCT

0

statusクラスでは、onResponseが呼び出されたときにのみ変数に値が割り当てられます。だから、nullという値をString status=response_listener.statusに返すのは当然です。

+0

statusの値がnullでない方法を教えてください。 –

+0

私は、いくつかのVolleyの例とそれらをどのように処理するかを見てみることをお勧めします。 –

関連する問題