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:id
plutôt que simplement id
dans le fichier XML. J'ai fait.
D'après d'autres, j'ai appris que cela View.findViewById
fonctionne 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.findViewById
et 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 ViewGroup
place View
et j'ai changé location_layout.xml
pour laisser le TextView
être un enfant direct de ma vue personnalisée, afin que le View.findViewById
fonctionne comme prévu. Surprise: cela n'a rien résolu.
Alors qu'est-ce que je fais mal?
J'apprécierai tout commentaire.