Rückgabewert von AsyncTask-Klasse onPostExecute-Methode
Ok, so jetzt habe ich Class A
enthält einige Spinner, die Werte werden bevölkert von Class B
erweitert AsnycTask
die packt die spinner-Werte von einem web-service. In der Klasse B, die ich zu verwalten, um die Werte abzurufen, die in einem Toast. Jetzt ist das problem wie gebe ich diese spinner Werte zurück in die Klasse Ein?
Habe ich versucht,
Kann OnPostExcecute Methode in AsyncTask-Werte ZURÜCKGEBEN?
durch die übergabe Class A
zu Class B
und speichern den Wert in eine öffentliche variable des Class A
wie unten
@Override
protected void onPostExecute(String result)
{
classA.classAvariable = result;
}
Aber immer wenn ich versuche zu Lesen, die classAvariable
ich bekomme immer eine NullPointer Exception
.
Scheint, wie die Variablen nie zugewiesen mit dem Ergebnis.
Für die Lesbarkeit Zweck brauchte ich, Sie zu trennen Class B
anstatt als inline-Klasse.
Irgendwelche Ideen meiner Kolleginnen und Java-Programmierer?
InformationsquelleAutor der Frage Jack-V | 2012-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie werden versuchen, zu Lesen-Klasse Eine variable vor, es wird eingestellt..
Versuchen Sie, es zu tun Rückrufe verwenden..in der callback-Funktion übergeben Sie die Werte und aktualisieren Ihr Spinner..
Können Sie erstellen
interface
werden, übergeben Sie es zurAsyncTask
(im Konstruktor), und dann rufen Sie die Methode inonPostExecute
Beispiel:
Ihre Schnittstelle:
Ihre Tätigkeit:
Und Ihre AsyncTask:
InformationsquelleAutor der Antwort Nermeen
Problem hier ist, dass wenn Sie führen Sie Ihre AsynchTask, seiner doInBackground() methode ausführen in einem separaten thread und der thread, begonnen haben, diese AsynchTask vorwärts zu bewegen, Damit änderungen auf Ihre variable AsynchTask spiegelt sich nicht in der übergeordneten thread (, der sagte, diese AsynchTask) sofort.
Beispiel --
//hier noch 5
InformationsquelleAutor der Antwort Mufazzal
Erstellen Sie eine Schnittstelle wie
OnCompletRequest()
dann übergeben Sie diese an Ihre Klasse Konstruktor und rufen Sie einfach die Methode in dieser Schnittstelle wiecomplete(yourList list)
in die Methode deronPostExecute(String result)
InformationsquelleAutor der Antwort Ali Imran