tags:

views:

69

answers:

1

Hi all

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.

in my 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 );

which returns null. Doing this is my Activity works fine. So maybe it's because of the Activity.findViewById and 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 null.

then i changed my custom view to extend ViewGroup instead 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: didn't solved anything.

So what the heck am i doing wrong ?

I'll appreciate any comments.

regards, Thomas ;)

+1  A: 

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.

CommonsWare
wow, that was fast O_oand much more important: that solved the problem!you saved my day, thanks.Thomas :D
Thomas
Important on SO, you have to mark accepted answers by using the tick on the left of the posted answer, below the voting. This will increase your rate.
Pentium10