2010-11-15 2 views
0

Honnêtement, je ne pouvais pas penser à un bon titre. Pardon. Quoi qu'il en soit, j'ai donc une application que je suis en train de faire où je tire des informations de mon API web personnalisé. Je tire des données de l'API et remplis la mise en page avec cette information. Le problème est qu'il faut un certain temps pour que l'application se bloque pendant quelques secondes avant que l'information soit tirée puisqu'elle est dans la méthode onCreate de l'activité. Pour résoudre ce problème, j'ai implémenté une boîte de dialogue de chargement. C'est là que les problèmes ont commencé. Je mets les demandes http dans un fil séparé et il se télécharge bien. Aucun problème. Cependant, il garde la force de fermeture chaque fois que j'essaie de modifier la mise en page par la suite. Donc, fondamentalement, ma question est comment puis-je modifier la mise en page après que le fil d'arrière-plan est terminé? Tout ce que j'essaie maintient la fermeture de l'application.App continue de mourir après la mise en page des résultats de la requête http

+0

vous avez NPE à com.informaldebates.Main.generateUserProfile (Main.java:203) (si j'ai lu votre journal correctement). Pouvez-vous poster le code? – Asahi

Répondre

0

Utilisez une asynctask. Vous essayez de mettre à jour l'interface utilisateur à partir d'un thread différent. Tu ne peux pas faire ça. Il ya environ 11 milliards d'autres questions sur ce même sujet

+0

J'ai essayé ça. C'est là où je suis maintenant. Il force toujours la fermeture en disant que je suis incapable de changer une vue d'un fil différent. Est-ce que cela signifie que asynctask devrait me permettre de modifier l'interface utilisateur à partir de l'asynctask? Si oui, peut-être que je fais l'asynctask faux? –

+0

Mettez les éléments de mise à jour de l'interface utilisateur dans onPostExecute et placez les éléments d'arrière-plan dans doInBackground. onPostExecute s'exécute sur le thread de l'interface utilisateur et doInBackground s'exécute évidemment sur un thread d'arrière-plan. –

+0

Cela n'a pas fonctionné. Il jette toujours une erreur. Voici la sortie de logcat si elle permet: D/AndroidRuntime (15743): Arrêt VM W/dalvikvm (15743): ThreadID = 1: le fil sortant à l'exception non capturée (groupe = 0x4001d7e8) E/AndroidRuntime (15743): Exception irrécupérable: principale E/AndroidRuntime (15743): java.lang.NullPointerException E/AndroidRuntime (15743): \t à com.informaldebates.Main.generateUserProfile (Main.java:203) E/AndroidRuntime (15743) : \t à com.informaldebates.Main $ LoadingThread.onPostExecute (Main.java:115) E/AndroidRuntime (15743): \t à com.informaldebates.Main $ LoadingThread.onPostExecute (Main.java:1) –

Questions connexes