2017-03-01 5 views
0

Ich möchte den Wert von a erhalten und auf b gesetzt werden, wie kann ich das tun?
öffentliche Klasse MainActivity erweitert AppCompatActivity { int a, b;Wie man den Wert von asynctask in MainActivity verwendet

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Task task=new Task(); 
    task.execute(5,6); 
    b=a; 
} 

public class Task extends AsyncTask<Integer,Void,Integer>{ 

    @Override 
    protected void onPostExecute(Integer integer) { 
     super.onPostExecute(integer); 
     a=integer; 

    } 

    @Override 
    protected Integer doInBackground(Integer... integers) { 
     return integers[0]+integers[1]; 
    } 
} 
} 

Antwort

1

in Linie b=a; Nachlaufzeit anderen Thread läuft

bestes Ergebnis ist in Methode onPostExecute Schreib b = a;

so b vor als ein

0

In Ihrer Frage gesetzt werden Sie bereits die Antwort haben. Nach der Ausführung dieser Anweisung.

Task task=new Task(); 
task.execute(5,6); 

Nach task.execute erster doInBackground aufgerufen wird ausführen und dann wird es zu onPostExecute dann Summe von a und b zurückkehren und die zu einem zuweisen. schreiben Sie einfach b=a in onPostExecute und es wird funktionieren, wie Sie wollen.

+0

danke für Ihre Antwort, aber in diesem Fall muss ich b in der MainActivity verwenden. –

+0

können Sie Ihr Szenario erklären, weil Asyntask offensichtlich einige Zeit braucht, deshalb verwenden wir AsynTask, wollen aber trotzdem oncreate, erstellen dann einen neuen Thread und weisen etwas Zeit für die Ausführung zu, aber es wird Ihre Lösung nicht abdecken. –

+0

Ich habe mein Problem gelöst, indem ich "a" auf Sharedreference gespeichert habe, dann auf MainActivity zurückgekehrt bin und "b" zugewiesen habe, und ich bekomme das Ergebnis, das ich will.Vielen Dank für Ihre Hilfe! \ –

Verwandte Themen