Prima di tutto: sì, ho letto tutti gli altri thread su questo argomento. E non solo quelli di questo sito ... (vedi, sono un po 'frustrato)
La maggior parte di essi viene fornita con il consiglio di utilizzare android:id
anziché solo id
nel file XML. L'ho fatto.
Da altri, ho imparato, che View.findViewById
funziona diversamente da Activity.findViewById
. Ho gestito anche quello.
Nel mio location_layout.xml
, io uso:
<FrameLayout .... >
<some.package.MyCustomView ... />
<LinearLayout ... >
<TextView ...
android:id="@+id/txtLat" />
...
</LinearLayout>
</FrameLayout>
Nella mia attività faccio:
...
setContentView( R.layout.location_layout );
e nella mia classe di visualizzazione personalizzata:
...
TextView tv = (TextView) findViewById( R.id.txtLat );
che ritorna null
. In questo modo, la mia attività funziona bene. Quindi forse è a causa della Activity.findViewById
e View.findViewById
differenze. Quindi ho archiviato il contesto passato al costruttore della vista doganale localmente e ho provato:
...
TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );
che ha anche restituito null
.
Poi, ho cambiato il mio visualizzazione personalizzata per estendere ViewGroup
invece View
e cambiato il location_layout.xml
lasciare che il TextView
sia un figlio diretto della mia visualizzazione personalizzata, in modo che la View.findViewById
dovrebbe funzionare come supposto. Suprise: non ha risolto nulla.
Cosa diavolo sto facendo di sbagliato?
Apprezzerò qualsiasi commento.