Tout d'abord: oui, j'ai lu toutes les autres discussions sur ce sujet. Et pas seulement ceux de ce site ... (vous voyez, je suis un peu frustré)
La plupart d'entre eux sont accompagnés des conseils à utiliser android:idplutôt que simplement iddans le fichier XML. J'ai fait.
D'après d'autres, j'ai appris que cela View.findViewByIdfonctionne différemment Activity.findViewById. J'ai aussi géré ça.
Dans mon location_layout.xml, j'utilise:
<FrameLayout .... >
<some.package.MyCustomView ... />
<LinearLayout ... >
<TextView ...
android:id="@+id/txtLat" />
...
</LinearLayout>
</FrameLayout>
Dans mon activité, je fais:
...
setContentView( R.layout.location_layout );
et dans ma classe de vue personnalisée:
...
TextView tv = (TextView) findViewById( R.id.txtLat );
qui revient null. Ce faisant, mon activité fonctionne bien. C'est peut-être à cause des différences Activity.findViewByIdet View.findViewById. J'ai donc stocké localement le contexte transmis au constructeur de la vue des douanes et j'ai essayé:
...
TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );
qui est également revenu null.
Ensuite, j'ai changé ma vue personnalisée pour l'étendre à la ViewGroupplace Viewet j'ai changé location_layout.xmlpour laisser le TextViewêtre un enfant direct de ma vue personnalisée, afin que le View.findViewByIdfonctionne comme prévu. Surprise: cela n'a rien résolu.
Alors qu'est-ce que je fais mal?
J'apprécierai tout commentaire.