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:idanziché solo idnel file XML. L'ho fatto.
Da altri, ho imparato, che View.findViewByIdfunziona 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.findViewByIde View.findViewByIddifferenze. 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 ViewGroupinvece Viewe cambiato il location_layout.xmllasciare che il TextViewsia un figlio diretto della mia visualizzazione personalizzata, in modo che la View.findViewByIddovrebbe funzionare come supposto. Suprise: non ha risolto nulla.
Cosa diavolo sto facendo di sbagliato?
Apprezzerò qualsiasi commento.