Primeiro de tudo: sim, eu li todos os outros tópicos sobre este tópico. E não apenas os deste site ... (veja, estou um pouco frustrado)
A maioria deles vem com o conselho de usar, em android:id
vez de apenas id
no arquivo XML. Eu fiz.
Aprendi que dos outros isso View.findViewById
funciona de maneira diferente Activity.findViewById
. Eu lidei com isso também.
No meu location_layout.xml
, eu uso:
<FrameLayout .... >
<some.package.MyCustomView ... />
<LinearLayout ... >
<TextView ...
android:id="@+id/txtLat" />
...
</LinearLayout>
</FrameLayout>
Na minha atividade eu faço:
...
setContentView( R.layout.location_layout );
e na minha classe de exibição personalizada:
...
TextView tv = (TextView) findViewById( R.id.txtLat );
que retorna null
. Fazendo isso, minha Atividade funciona bem. Então talvez seja por causa da Activity.findViewById
e View.findViewById
diferenças. Então, eu armazenei o contexto passado para o construtor de exibição da alfândega localmente e tentei:
...
TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );
que também retornou null
.
Então, eu mudei meu modo de exibição personalizado para estender ViewGroup
vez View
e mudou a location_layout.xml
deixar a TextView
ser um filho direto do meu ponto de vista personalizado, de modo que o View.findViewById
deve funcionar como deveria. Surpresa: não resolveu nada.
Então, o que diabos estou fazendo de errado?
Eu aprecio qualquer comentário.