2017-06-17 2 views
-1

私のプロジェクトで私のサーバーから "Volley" libを使ってデータを受け取りました。私はJSONのエンコードされた値を返すPHPファイルを作ったので、私のコードStringRequest、私のStringRequestからデータを返します - Volleyのlib

の内側にそれを処理です:

public static void getStatus(final String id, final Marker marker1) 
    { 
     // Tag used to cancel the request 
     String tag_string_req = "req_register"; 
     temp=""; 
     StringRequest strReq = new StringRequest(
       Request.Method.POST, 
       "http://URL/file.php", 
       new Response.Listener<String>() { 

        @Override 
        public void onResponse(String response) { 



         try { 
          JSONObject jObj = new JSONObject(response); 
          String status = jObj.getString("string"); 
          temp = status; 


         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 
       }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }) { 
      @Override 
      protected Map<String, String> getParams() { 
       // Posting parameters to getData url 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("id", id); 
       return params; 
      } 

     }; 

     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 

    } 

私は、このメソッドから文字列「状態」を返すことができますどのように? (もし私がStringからvoidへのメソッドを変更しても、onResponse(idkはなぜ...))の内部から値を返すことができませんでしたか?なぜ私はそれを動作させることができますか?

+0

後の行に値を期待して、上部の温度を割り当てるStringRequest以内にそれを設定することができないということですreturn to –

答えて

0

短い答えは返さないということです。あなたもそうではありません。

代わりに、次に実行するコードブロックに結果を渡します。これは別のメソッドでも、StringRequestのonResponse内からでも実行できます。

主なポイントは、あなたがちょうどあなたが好きな受け入れonResponse` `内の別のメソッドを呼び出すaddToRequestQueue

+0

はい、私は戻り文字列としてtempを置くことはできませんが、あなたは理由を説明できますか?それについて私はどこで読むことができますか? – drdisrespect

+0

これが非同期コードの仕組みです。スレッディングは一般的な話題です –

+0

同様に、あなたはVolleyと比較してAsynctaskを見たかもしれません。応答リスナを使用してAsynctaskを構築することもできます。https://stackoverflow.com/questions/12575068/how-to-get-the-result-of-onpostexecute-to-main-activity-because-asynctask-is-a –

関連する問題