2016-05-02 4 views
0

Androidのアクティビティでvolleyを使用してリクエストを行い、応答を得ましたが、別の方法で応答を処理したいのですが、動作しません私はする必要がありますか?AndroidでVolleyのレスポンスを処理する方法

public class TestActivity extends Activity { 

RequestQueue queue; 

private String result; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    String url = "www.google.com/something/I/need"; 

    queue = Volley.newRequestQueue(this); 

    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        // Do something with the response 
        Log.i("resp", response); 
        // I want to do sth with the response out of here 
        // maybe like this, let result = response 
        // and see the log at the end of the code 
        // but it failed, what should I do? 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        // Handle error 
        Log.e("error", error.toString()); 
       } 
      }); 
    queue.add(stringRequest); 
    Log.e("result", result); 
} 

答えて

0

あなたがやっているかについて考える:あなたはStringRequestを作成している、そして、あなたが要求キューに追加したが、その後すぐに結果をチェックしてみてください。要求がまだ処理されていないため、明らかにこれは機能しません。

あなたの応答はonResponseの方法で届きます。それだけであなたは何かをすることができます。 result = responseをここで設定できますが、少し時間がかかる可能性があるonResponseが呼び出されたときにのみ値を見ることができます。

これは物事を明確にすることを望みます。

1

Volley要求は非同期であるため、要求を送信した後のプログラムは、応答を待たずに実行を継続します。その結果を処理するコードがOnResponseメソッドに挿入されます。 OnResponseメソッドからログアウトしたい理由をより正確に説明するには