Question

J'ai des rapports d'erreur sur mon application Android, il est un NullPointerException dans onCreate () dans une activité. Le code qui échoue est getIntent (). GetExtras (). GetStringExtra ( "name"). (NullPointerException)

Cela signifie que getExtras () est nulle en quelque sorte. Je suis sûr que je suis en train de l'intention supplémentaire sur tous les lieux que je crée l'intention. Je ne peux pas le recréer sur mon émulateur sur l'appareil. Je pense qu'il est arrivé sur mon appareil réel (mais pas pendant que je le débogage) après avoir essayé d'ouvrir l'application à nouveau, en attendant Android a probablement tué le processus et recréée l'activité. Mais ne devraient pas être les extras intention conservés même dans ce scénario?

J'ai essayé de tuer le processus sur l'émulateur, onCreate a été appelé à nouveau et les getExtras () retourne la bonne valeur.

Je remplacé le code avec getIntent (). GetStringExtra (). Quelle est la différence en plus il ne sera pas une NullPointerException mais conservera tout de même la chaîne comme nulle. Y at-il autre différence?

Que pourrait-on la cause?

Était-ce utile?

La solution 3

Je trouve que quelque part ailleurs dans mon code, je créais des intentions de raccourci qui avait un String [] supplémentaire. HOME Android (et peut-être d'autres parties du système) ne le font pas Persit tableaux de chaînes, seuls extras primitifs (int, string, long, flotteur ...). Mais le code qui a été à l'origine des problèmes ne pas utiliser des raccourcis, il est seulement une activité simple qui reçoit un supplément de tableau de chaînes. Peut-être que les extras vides ont été causés par ce problème aussi - l'application a été tué par OS et les extras ne peuvent pas être stockés. Aucune exception est levée par Android dans ce cas.

Décrite par Romain Guy ici: http://groups.google.com/group/android- développeurs / browse_thread / fil / 7f2ce458bd5d112f / 189e2b7b2b2532d7

J'ai posé une question plus spécifique à ce sujet ici: raccourci extras intention perdu après le redémarrage?

Autres conseils

renvoie Intent.getStringExtra () null s'il n'y a pas de frais supplémentaires. Intent.getExtras () retourne null s'il n'y a pas de frais supplémentaires, vous devez vérifier que avant d'essayer d'appeler getString () ou d'autres méthodes là-dessus.

getIntent.getExtras () est de retour nul à un moment donné. getIntent (). getStringExtra () est très probablement codé pour vérifier un extras null et null retour si getExtras () est nulle. Alors appelé architecture « jette pas ». Si oui, c'est l'exécution d'exécution valide et ne génère pas d'exception. appelant getStringExtra sur un extras null n'est pas l'exécution d'exécution valide et doit lancer une exception.

Il semble qu'il y ait un chemin où getExtras () est nulle, de sorte que vous pouvez coder contourner ce problème en vérifiant un extras null.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top