Valeur renvoyée par la méthode asyncTask onPostExecute
Ok, donc maintenant j'ai Class A
qui contient certains filateurs que les valeurs seront remplis par Class B
qui s'étend AsnycTask
qui attrape le spinner valeurs à partir d'un service web. Dans la classe B, j'arrive à récupérer les valeurs, en montrant dans un Toast. Le problème maintenant est de savoir comment dois-je transmettre ces spinner valeurs de retour de la Classe A?
J'ai essayé
Peut OnPostExcecute méthode dans AsyncTask valeurs de RETOUR?
en passant Class A
à Class B
et de stocker la valeur dans une variable publique de Class A
comme ci-dessous
@Override
protected void onPostExecute(String result)
{
classA.classAvariable = result;
}
Cependant à chaque fois que j'essaie de lire le classAvariable
je reçois toujours un NullPointer Exception
.
Semble que la variable n'a jamais été affecté par le résultat.
Pour des raisons de lisibilité, que j'nécessaire pour séparer les Class B
au lieu de l'utiliser comme une ligne de classe.
Toutes les idées de mes collègues programmeurs Java?
source d'informationauteur Jack-V
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous essayez de lire de la classe d'Une variable avant de l'être ensemble..
Essayez de le faire à l'aide de rappels..dans la fonction de callback transmettre les valeurs et l'actualisation de vos toupies..
Vous pouvez créer
interface
le passer àAsyncTask
(dans le constructeur), puis d'appeler la méthode dansonPostExecute
Par exemple:
Votre interface:
Votre Activité:
Et votre AsyncTask:
Problème ici est que lorsque vous exécutez votre AsynchTask, son doInBackground() methode exécuter dans le thread séparé et le fil qui ont commencé ce AsynchTask aller de l'avant, permettant Ainsi des changements se produisent sur votre variable par AsynchTask ne se reflète pas sur parent thread (qui a déclaré cette AsynchTask) immédiatement.
Exemple --
//ici encore 5
Créer une interface comme
OnCompletRequest()
puis la transmettre à votre ClassB constructeur et il suffit d'appeler la méthode à l'intérieur de cette interface commecomplete(yourList list)
dans la méthode deonPostExecute(String result)