2016-11-22 6 views
0

Ich habe ein Problem mit einem Fragment, das ich baue. Im Grunde genommen möchte ich jetzt nur noch überprüfen, wo und wie ich http-Anfragen innerhalb des Fragments machen kann.Android Debugger springt Fragment Methoden

So weit, wenn ich den Code ohne den Debugger ausführen, funktioniert alles und die Protokolle funktionieren. Aber wenn ich alles Schritt für Schritt durchgehen will, bekomme ich nichts. Und der Debugger springt von dem Teil des Codes, der auf der call.enqueu-Methode ausgeführt wird, an das Ende der Methodendeklaration. Der Code, den ich verwende, ist der folgende. Bitte beachten Sie, dass dieses Verfahren perfekt funktioniert, wenn es von einer Aktivität ausgeführt wird und nicht von einem Fragment, das mich glauben lässt, dass das Problem in meiner Implementierung des Fragments liegt.

Das Verfahren zur async requestÑ:

public void testAsyncCreate() { 

OkHttpClient client = new OkHttpClient(); 

RequestBody body = RequestBody.create(CREATE_MEDIA_TYPE, "data={\"process\":\"12222\", \"phone\":\"1111111\"}"); 

Request request = new Request.Builder() 
     .url(ALLWAYS_API) 
     .post(body) 
     .build(); 

Call call = client.newCall(request); 

call.enqueue(new Callback() { 
    @Override 
    public void onFailure(Call call, IOException e) { 

    } 

    @Override 
    public void onResponse(Call call, Response response) throws IOException { 
     // any additional runnable items go in here 
     try { 


      String jsonData = response.body().string(); // the exception is caught at this point 
      Log.d("<Mensajes>",jsonData); 
      extractCreate = parseExtractCreateDetails(jsonData); 
      if(response.isSuccessful()) { 
        extractCreate = parseExtractCreateDetails(jsonData); 
        getActivity().runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Log.d("<=====>", "check"); 
          Log.d(TAG, "Is this even working?"); 


         } 
        }); 
       } 
      //getStops(jsonData); 

     }catch(IOException e) { 

     }catch (JSONException e){ 

     } 


    } 
}); 
} // end of asyncCreate 

Was ich nicht verstehen habe, wie die Protokolle arbeiten, aber ich bekomme keine Informationen aus dem Debugger. Gibt es einen spezifischen Weg, um diese Art von Dingen innerhalb Fragments zu behandeln? ist es Konvention, sie woanders zu behandeln, wie zum Beispiel die Aktivität Fragment? und wenn ja, wie würde dies an die Fragment Aktivität weitergegeben werden?

Antwort

0

enqueue macht im Hintergrund-Thread die Anfrage ... Es befindet sich auf den einzelnen Stützpunkten innerhalb Reaktion oder Ausfall stoppt nach der response.It immer einige Zeit dauern und ist abhängig von Internet und einige Dinge für die Zeit es

+0

Würden Sie nimmt sagen dass es andere Konventionen gibt, die üblicherweise für solche Fälle eingehalten werden? Wenn die Bearbeitung der Anfrage im ui-Thread nicht empfohlen wird, würde ich das lieber ändern. –

+0

Enqueue-Methode selbst läuft auf Hintergrund thread.Thats, warum die Break-Punkte nach aufgerufen werden.Breakpunkte innerhalb der Antwort oder Fehler wird aufgerufen, wenn die Antwort erhalten wird. –