[mono-android] FindViewById returning a ViewGroupInvoker
Enrico
djtails at gmx.net
Thu Feb 23 00:37:17 UTC 2012
It fails because you need the Activity Context for the FindViewByID
and some Layout has not the Context to work with it.
Would be my answer to this.
Enrico
Am 22.02.2012 um 20:07 schrieb Chris Tacke:
> In the end it worked if I requested the FindViewById from the
> Activity itself, not the Layout:
>
> This fails:
>
> var map = m_layout.FindViewById<MapView>(Resource.Id.DriverMap);
>
> This works:
>
> var map = this.FindViewById<MapView>(Resource.Id.DriverMap);
>
> So that answers #1. But #2 is still apropos. Why does the first
> case above fail? The MapView *is* in that Layout.
>
> -Chris
>
>
>
>> -----Original Message-----
>> From: monodroid-bounces at lists.ximian.com [mailto:monodroid-
>> bounces at lists.ximian.com] On Behalf Of Chris Tacke
>> Sent: Wednesday, February 22, 2012 9:50 AM
>> To: Discussions related to Mono for Android
>> Subject: [mono-android] FindViewById returning a ViewGroupInvoker
>>
>> I have an AbsoluteLayout that contains a MapView. I load this layout
>> in my Activity (which is a MapActivity) like this:
>>
>> m_layout = LayoutInflater.Inflate(Resource.Layout.DriverLayout,
>> null);
>> SetContentView(m_layout);
>>
>> And the MapView shows up on the screen and works just fine.
>>
>> The MapView is defined in the layout like this:
>>
>> <com.google.android.maps.MapView
>> android:id="@+id/DriverMap"
>> android:layout_width="800px"
>> android:layout_height="400px"
>> android:layout_x="0px"
>> android:layout_y="100px"
>> android:clickable="true"
>> android:apiKey="mykey" />
>>
>> Later on in my app, I'd like to get hold of this MapView so I can
>> zoom
>> in on it, but I'm having difficulty.
>>
>> My first attempt returned null:
>>
>> var m =
>> m_layout.FindViewById<MapView>(Resource.Id.DriverMap);
>>
>> A more generic version with a cast fails (i.e. code doesn't
>> continue to
>> run past this point - assuming the cast failed)
>>
>> var m = (MapView)m_layout.FindViewById (Resource.Id.DriverMap);
>>
>> So I tried without a cast:
>>
>> var m = m_layout.FindViewById (Resource.Id.DriverMap) as
>> Android.GoogleMaps.MapView;
>>
>> And again I get back a null;
>>
>> So I tried this:
>> var m = m_layout.FindViewById(Resource.Id.DriverMap);
>>
>> And I *do* get back an object - just not a MapView. I run this:
>>
>> var mt = m.GetType().Name;
>>
>> And I get back "ViewGroupInvoker"
>>
>> My GoogleFu fails to even find what this type is. Obviously it's
>> related to a ViewGroup, but I've not explicitly created one (maybe
>> the
>> MapView does?). So I guess I have a couple questions:
>>
>> 1. How do I get access to my MapView? I mean that's really what I
>> want.
>> 2. Why am I getting back this "ViewGroupInvoker" and what is it?
>> Getting the right answer (#1) is good, but understanding the
>> failure is
>> also important so I don't fall into this again.
>>
>> -Chris
>>
>>
>> _______________________________________________
>> Monodroid mailing list
>> Monodroid at lists.ximian.com
>>
>> UNSUBSCRIBE INFORMATION:
>> http://lists.ximian.com/mailman/listinfo/monodroid
> _______________________________________________
> Monodroid mailing list
> Monodroid at lists.ximian.com
>
> UNSUBSCRIBE INFORMATION:
> http://lists.ximian.com/mailman/listinfo/monodroid
More information about the Monodroid
mailing list