First of all: yes, I read all the other threads on this topic. And not only those from this site... (you see, I'm a little frustrated)
Most of them come with the advice to use
android:id instead of just
id in the XML file. I did.
From others, I learned, that
View.findViewById works different than
Activity.findViewById. I handled that, too.
location_layout.xml, I use:
<FrameLayout .... > <some.package.MyCustomView ... /> <LinearLayout ... > <TextView ... android:id="@+id/txtLat" /> ... </LinearLayout> </FrameLayout>
In my Activity I do:
... setContentView( R.layout.location_layout );
and in my custom view class:
... TextView tv = (TextView) findViewById( R.id.txtLat );
null. Doing this, my Activity works fine. So maybe it's because of the
View.findViewById differences. So I stored the context passed to the customs view constructor locally and tried:
... TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );
which also returned
Then, I changed my custom view to extend
View and changed the
location_layout.xml to let the
TextView be a direct child of my custom view, so that the
View.findViewById should work as supposed. Suprise: it didn't solve anything.
So what the heck am I doing wrong?
I'll appreciate any comments.
which returns null
Possibly because you are calling it too early. Wait until
onFinishInflate(). Here is a sample project demonstrating a custom
View accessing its contents.
Possibly, you are calling
findViewById before calling
If that's the case, try calling
findViewById AFTER calling