2017-03-02 2 views
-1

Ich habe eine AsyncTask, die innerhalb einer Klasse ist. Die äußere Klasse enthält eine Variable, die nach dem Ausführen von AsyncTask aktualisiert wird. Wenn ich jedoch auf die Variable der äußeren Klasse von MainActivity aus zugreife, wird Nullwert angezeigt.Kann nicht die Werte von einer anderen Klasse

MainActivity Klasse:

RetrieveJSON retrieve = new RetrieveJSON(); 
       retrieve.new RetrieveWarehouseSalesJSON(MainActivity.this).execute(); 
       String location = retrieve.sales_location; 
       System.out.println("Location is: " + location); 

Ort zeigt Nullwert.

RetrieveJSON Klasse (enthält AsyncTask):

public class RetrieveJSON { 
    String sales_location; 
    class RetrieveWarehouseSalesJSON extends AsyncTask<Void, Void, Void>{ 
     //.... 
    sales_location = s.getString("title"); 
          System.out.println("Sales_locatiion" + sales_location); 
    } 
} 

sales_location zeigt die richtigen Werte hier, aber wenn ich es aus MainActivity Zugriff zeigt es Nullwert.

+1

[Das ist wie mulithreading funktioniert ...] (http://ideone.com/PPHi95) Wenn ich einen Penny für jedes Mal hätte, wenn ähnliche Fragen gestellt würden ... . – Selvin

Antwort

0

AsyncTask laufen gleichzeitig mit Haupt-Thread so, wenn Sie execute();

Methode geht sofort zur nächsten Zeile steuern rufen:

String location = retrieve.sales_location; 

setzen Sie Ihren Code für den Standort in onPostExecute(Result result) Methode

onPostExecute(Result result){ 
    String location = retrieve.sales_location; 
    System.out.println("Location is: " + location); 
} 
Verwandte Themen