findViewById retourne null

Bonjour,

Je débute en ce moment sur le développement Android et je suis tombé sur un problème que surement tout débutant rencontre : le findViewById qui retourne null.

Il faut savoir plusieurs choses sur findViewById…

Qu’est ce que fait findViewById ? Il recherche sur l’ensemble de l’arbre XML de référence qu’il possède l’élément donné en paramètre.

Importante chose à savoir, il existe deux fonctions findViewById, la première sur l’Activity. Pour définir l’arbre XML de référence d’une Activity, il faut utiliser :

setContentView(fichier.xml);

Ensuite, le findViewById, recherchera uniquement dans ce fichier là, donc si votre élément ne s’y trouve pas, la fonction vous retournera null, comme pour moi… 😀

Le deuxième findViewById s’applique sur une View et recherchera donc l’élément donné en paramètre dans l’arbre XML de cette View…Il s’utilise ainsi :

TextView view = (TextView) view.findViewById(R.id.bidule);

Que faire donc, si vous voulez récupérer un élément qui ne se trouve ni dans le fichier xml de référence de l’activity courante, ni dans les views que vous possédez ?
Très simple, il suffit d’utiliser inflate, comme ceci :

TextView view = (TextView) this.getLayoutInflater().inflate(R.layout.monLayout, null);