Tout d'abord: oui, j'ai lu tous les autres fils sur ce sujet. Et pas seulement ceux de ce site... (vous voyez, je suis un peu frustré)
La plupart d'entre eux viennent avec les conseils d'utilisation android:id
au lieu de simplement en id
dans le fichier XML. Je l'ai fait.
Des autres, j'ai appris, qu' View.findViewById
des œuvres différentes de Activity.findViewById
. J'ai manipulé que, trop.
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 renvoie null
. Ce faisant, mon Activité fonctionne très bien. Alors peut-être que c'est à cause de l' Activity.findViewById
et View.findViewById
différences. Je l'ai donc rangé le contexte passé à la douane de vue constructeur localement et essayé:
...
TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );
qui a également retourné null
.
Ensuite, j'ai changé ma vue personnalisée pour étendre ViewGroup
plutôt View
et changé l' location_layout.xml
laisser l' TextView
être un enfant direct de ma vue personnalisée, de sorte que l' View.findViewById
devrait fonctionner comme le suppose. Surprise: il n'est pas résoudre quoi que ce soit.
Donc, ce que le diable ai-je fait de mal?
Je vais apprécions tous les commentaires.