Right, there is a specific list of framework views that can be used when building widgets:
http://groups.google.com/group/android-developers/msg/a5247467151f5e3a And subclasses of those views aren't allowed, since you could include any arbitrary code in your subclass. (Because the widget's view tree lives in Launcher, the layout and drawing code is executed by the Launcher process.) Also, since Launcher doesn't request the Maps library in its manifest, it wouldn't know how to inflate a MapView. j On Sat, May 16, 2009 at 5:42 PM, JP <[email protected]> wrote: > > I've started building a Widget for an app that is mostly map centric, > i.e. consists of a screen-filling subclassed MapView, Overlay and so > forth. The relevant information that is displayed by the map overlay > actually fits into a Widget that uses one of the standard sizes, so it > would make sense to use the subclassed MapView and all it entails > inside the Widget (in the spirit of polymorphism). > Looking at Google's sample code, it seems the Views that can be > displayed in Widgets are limited to just a few Views (I've seen > TextView and ImageView)? I suppose I could live with that (although it > entails duplication), but the real thing would be using the subclassed > MapView. I tried that out, but when loading the Widget, I get a class > not found exception. Is there a way to use a subclassed View in a > Widget? > > > Below the sanitized layout and the LogCat dump: > > <-------------------layout -----------------------> > > <?xml version="1.0" encoding="utf-8"?> > > <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/ > android" > android:id="@+id/widget" > android:layout_width="fill_parent" > android:layout_height="wrap_content" > android:focusable="true" > style="@style/WidgetBackground"> > > <com.google.android.maps.MyMapView > android:id="@+id/mapview" > android:layout_width="fill_parent" > android:layout_height="fill_parent" > android:enabled="true" > android:clickable="true" > android:apiKey="myKey.oi878f8w88OOiu0fu0." > /> > > <------------------crash > --------------------------------------------------> > > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): > android.view.InflateException: Binary XML file line #18: Error > inflating class com.google.android.maps.MyMapView > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:575) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.view.LayoutInflater.rInflate(LayoutInflater.java:617) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.view.LayoutInflater.inflate(LayoutInflater.java:407) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.view.LayoutInflater.inflate(LayoutInflater.java:320) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.widget.RemoteViews.apply(RemoteViews.java:830) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.appwidget.AppWidgetHostView.updateAppWidget > (AppWidgetHostView.java:167) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.appwidget.AppWidgetHost.createView(AppWidgetHost.java:218) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > com.android.launcher.Launcher.completeAddAppWidget(Launcher.java:653) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > com.android.launcher.Launcher.onActivityResult(Launcher.java:335) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > com.android.launcher.Launcher.addAppWidget(Launcher.java:957) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > com.android.launcher.Launcher.onActivityResult(Launcher.java:332) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.app.Activity.dispatchActivityResult(Activity.java:3595) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.app.ActivityThread.deliverResults(ActivityThread.java:3001) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.app.ActivityThread.handleSendResult(ActivityThread.java:3047) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.app.ActivityThread.access$2300(ActivityThread.java:112) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.app.ActivityThread$H.handleMessage(ActivityThread.java:1721) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.os.Handler.dispatchMessage(Handler.java:99) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.os.Looper.loop(Looper.java:123) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.app.ActivityThread.main(ActivityThread.java:3948) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > java.lang.reflect.Method.invokeNative(Native Method) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > java.lang.reflect.Method.invoke(Method.java:521) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run > (ZygoteInit.java:782) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > dalvik.system.NativeStart.main(Native Method) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): Caused by: > java.lang.ClassNotFoundException: com.google.android.maps.MyMapView in > loader dalvik.system.pathclassloa...@400190f8 > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > java.lang.ClassLoader.loadClass(ClassLoader.java:573) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > java.lang.ClassLoader.loadClass(ClassLoader.java:532) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.view.LayoutInflater.createView(LayoutInflater.java:465) > 05-17 00:09:58.162: WARN/AppWidgetHostView(611): at > android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:564) > > > > > -- Jeff Sharkey [email protected] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

