J'ai une activité et que je reçois une nullpointerException sur la dernière ligne de la méthode cliquée J'ai supprimé une partie du code pour le garder bref mais le problème est le "IT" La liste est accessible dans la méthode OnResponse, mais donne une nullpointerException dans la méthode cliquée. p> Qu'est-ce qui cause cela et comment puis-je stocker la liste à utiliser en dehors de la méthode OnResponse? P> P>
4 Réponses :
dans Tout ce que vous voulez faire après cliqué sur code> Vous appelez
getcompany code> où vous définissez un rappel où
il code> est défini. Le problème est que
OnResponse code> sera convoqué très probablement un certain temps après cela et
apicall.setCallback code> reviendra immédiatement. Donc,
getcompany code> retourne immédiatement et
IT code> sera toujours
null code> lorsque vous essayez d'y accéder. P>
doresponse code> est appelé, il doit être initié dans
doresponse code>. Comment faire cela dépend de l'étui d'utilisation réel qui n'est pas clair avec votre exemple, mais peut-être que mon explication vous aide à avoir des idées pour vous-même. Sinon, commencez une nouvelle question ici avec plus de détails (nouvelle question car elle n'a rien à voir avec NullPointerExceptions). P>
Ok merci pour la réponse. Je suppose que je peux faire ce que je veux faire à Onresponse, je voulais juste stocker la liste de l'activité d'abord
Parce que vous essayez d'obtenir la taille de la liste avant de l'initialiser.
dans
INTEGER.TOSTRING (IT.SIZE ());
parce que ce n'est pas encore initialisé
GetCompany (s); est la méthode asynchrone
Essayez de supprimer Integer.tostring (it.size ());
parce que chez non utilisé et non utile.
La principaactivité de la classe publique étend l'appcCompatiactivité {
Oui, je sais que ce n'est pas utilisé et ce n'est pas utile. Je veux stocker la liste dans l'activité. Cette ligne était juste pour voir si la liste existe, ce qu'elle ne le fait pas. De plus, je peux utiliser la liste informatique de la méthode OnResponse avant la ligne en question.
Je vais aller directement avec une solution possible pour vous qui vous donnent un exemple rapide d'une interface pourquoi votre code ne fonctionne pas: p> public void clicked(View view) {
// this method is gonna set "it" in the block of code in onResponse, which will happens after you call Integer.toString probably in a separate thread
getCompany(s);
Integer.toString(it.size());
}
Merci pour ça. Les interfaces semblent être la solution à beaucoup de problèmes que j'ai rencontrés avec Android. Je vais essayer demain
Une nullpointException se produit lorsque vous essayez d'utiliser une variable NULL (ou une variable qui n'a pas été initialisée). P>
Même si Je suggérerais d'ajouter J'espère que cela vous aidera. Diffuser non plus ;-) Joyeux codage! P> OnResponse () code> est appelé à partir de l'intérieur
cliqué () code>, vous devez vous rappeler que
OnResponse code> est dans un appel asynchrone. Cela signifie simplement qu'il n'est pas garanti que
OnResponse Code> finirait d'exécuter avant
cliqué () code> est appelé. P>
ineeger.tostring (it.size ()) code> à votre
OnResponse () code> méthode. P>
Merci pour la réponse mais ça ne m'aidait pas. Je veux stocker la liste dans l'activité. Je n'appellais que la méthode de taille pour voir si la liste existait.
De plus, lorsque vous avez une exception code> code>, incluez toujours la trace de la pile et mettez en surbrillance la (s) ligne (s) provoquant l'exception. Et vous voudrez peut-être apprendre Comment déboguer votre programme a>.
@Carcigenicate, onResponse est appelé de l'intérieur cliqué, avant d'avoir l'exception