7
votes

Exception de pointeur Android TextView and Null

Pourquoi

TextView test = (TextView) findViewById(R.id.testTextView);
test.getText();


0 commentaires

7 Réponses :


27
votes

La seule raison de FOETVIEDBYID Pour renvoyer NULL si vous passez une pièce d'identité valide, c'est que vous définissez la vue de contenu incorrect (avec setContentView ) ou non Vue du contenu du tout.


5 commentaires

Merci pour votre message, mais ce n'est pas ça. J'appelle setContentView dans Oncreate .


Pourriez-vous s'il vous plaît partager votre mise en page Oncreate et XML?


Le projet propre semble avoir fixé quel que soit le problème. Enfer sanglant.


Je suis confronté au même problème, mais dans mon cas, je n'utilise pas SetContentView car c'est un fragment, alors j'utilise View = Inflatra.inflate (r.layout.test, conteneur, faux); Mais cela me donne des erreurs, pas dans l'oncreemethod mais dans une méthode séparée ...


Merci beaucoup. Je serais embrasser si je pouvais, je devais être désespéré, je n'ai pas fait attention, je passais la mauvaise mise en page à setContent. tandis que (1) {merci; }



2
votes

Vous n'avez probablement pas appelé setContentView . Vous ne pouvez utiliser que FOETVIEWBYID pour obtenir des éléments de vues déjà gonflés.

Vous pouvez également utiliser une mise en pageInflater pour gonfler la vue, mais ce n'est probablement pas ce que vous voulez.


2 commentaires

Merci pour votre message, mais ce n'est pas ça. J'appelle setContentView dans Oncreate .


Merci. Mais ça ne marche pas. Je veux que tout le monde cesse d'essayer d'expliquer et de nous laisser produire un exemple de travail que nous pouvons utiliser. Je ne peux pas tester une explication. Je ne sais pas quoi appeler SetContentView sur. Quel paramètre? Je vous donne -1 parce qu'il n'y a rien à utiliser. S'il vous plaît arrêtez de commenter et de commencer à résoudre le problème.



2
votes

Êtes-vous sûr que le TextView est défini sur la droite XML? Par exemple, si vous créez une boîte de dialogue qui charge un XML personnalisé, pour obtenir un élément de ce XML, vous devez le mentionner dans dialog.findvieweby (r.id.testtextview);

Comme dit Falmarri, la vue doit être gonflée. Je comprends que vous avez résolu cela en créant un nouveau projet, mais pensait toujours à en mentionner pour les futurs utilisateurs.


0 commentaires

3
votes

Je pense que vous pourriez avoir écrit SetContentView (..) après avoir défini le TextView. Inverser ces celles-ci, et cela devrait fonctionner.

Modification: xxx

à: xxx


0 commentaires

1
votes

Cela peut également être que vous avez défini l'activité dans deux fichiers. Par exemple, layout et layout-v21 et certaines informations telles que l'ID sont manquantes sur l'une d'elles. Donc vérifier toutes les dispositions de l'activité


1 commentaires

C'était le problème dans mon cas. Merci!



0
votes

Dans mon cas, la mise en page n'était pas finie gonflée. Résolu en ajoutant un petit retard avant d'essayer d'accéder à TextView.

new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
    @Override
    public void run() {
        TextView test = (TextView) findViewById(R.id.testTextView);
        test.getText();
    }
}, 100);


0 commentaires

0
votes

J'ai eu du mal avec cela pendant un moment et ce que j'ai réalisé était que, si vous avez plus d'une version de fichier de mise en page comme:

"Activity_one.xml" dans le dossier "mise en page" et un dans "mise en page - petit dossier"

Que j'ai utilisé pour une prise en charge de la mise en page de plusieurs téléphones, le problème était que l'une des visions textuelles était dans les deux, avec exactement identique id et tout, mais la différence était que l'une était supérieure dans la hiérarchie des vues dans la mise en page.

Quand je les ai changés pour être au même endroit, cela fonctionnait.

(Je sais que cela est déjà répondu, mais peut-être que cela aide quelqu'un là-bas. Très rare cependant.)


1 commentaires

Votre réponse pourrait être améliorée avec des informations justificatives supplémentaires. S'il vous plaît Modifier Pour ajouter des détails supplémentaires, tels que des citations ou une documentation, de sorte que d'autres puissent confirmer que votre réponse est correcte. Vous pouvez trouver plus d'informations sur la façon d'écrire de bonnes réponses dans le centre d'aide .