Po pierwsze: tak, przeczytałem wszystkie pozostałe wątki na ten temat. I nie tylko te z tej strony ... (widzisz, jestem trochę sfrustrowany)
Większość z nich zawiera porady, których należy używać android:idzamiast tylko idw pliku XML. Zrobiłem.
Nauczyłem się od innych, że View.findViewByIddziała inaczej niż Activity.findViewById. Ja też sobie z tym poradziłem.
W moim location_layout.xmlużywam:
<FrameLayout .... >
<some.package.MyCustomView ... />
<LinearLayout ... >
<TextView ...
android:id="@+id/txtLat" />
...
</LinearLayout>
</FrameLayout>
W swojej działalności wykonuję:
...
setContentView( R.layout.location_layout );
i w mojej niestandardowej klasie widoku:
...
TextView tv = (TextView) findViewById( R.id.txtLat );
który zwraca null. Dzięki temu moja aktywność działa dobrze. Więc może to ze względu na Activity.findViewByIdi View.findViewByIdróżnic. Zapisałem więc kontekst przekazany lokalnie do konstruktora widoku celnego i próbowałem:
...
TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );
który również wrócił null.
Następnie zmieniłem widoku niestandardowego rozszerzenia ViewGroupzamiast Viewi zmienił location_layout.xmlpozwolić TextViewbyć bezpośrednim dziecko mojego widoku niestandardowego, tak że View.findViewByIdpowinno działać jak przypuszczano. Zaskocz: nic nie rozwiązało.
Co do cholery robię źle?
Będę wdzięczny za wszelkie komentarze.