2010-12-04 14 views
6

Pour un widget J'utilise une mise en page simple qui contient un TableLayoutPourquoi mon TableLayout n'est pas autorisé à être gonflé?

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TableRow > 
     (...) 
    </TableRow> 
</TableLayout> 

Mais quand je veux mettre à jour son contenu en créant un RemoteViews

RemoteViews eventElementLayout = new RemoteViews(this.getPackageName(), R.layout.widget_events_element); 

Je suis une exception en me disant que TableLayout est pas autorisé à être gonflé.

12-04 01:36:12.548: WARN/AppWidgetHostView(195): updateAppWidget couldn't find any view, using error view 
12-04 01:36:12.548: WARN/AppWidgetHostView(195): android.view.InflateException: Binary XML file line #2: Error inflating class android.widget.TableLayout 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.createView(LayoutInflater.java:513) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.widget.RemoteViews.apply(RemoteViews.java:930) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.widget.RemoteViews$ViewGroupAction.apply(RemoteViews.java:513) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.widget.RemoteViews.performApply(RemoteViews.java:955) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.widget.RemoteViews.apply(RemoteViews.java:932) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:219) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.appwidget.AppWidgetHost.updateAppWidgetView(AppWidgetHost.java:250) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.appwidget.AppWidgetHost$UpdateHandler.handleMessage(AppWidgetHost.java:73) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.os.Looper.loop(Looper.java:123) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at java.lang.reflect.Method.invoke(Method.java:521) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at dalvik.system.NativeStart.main(Native Method) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195): Caused by: android.view.InflateException: Binary XML file line #2: Class not allowed to be inflated android.widget.TableLayout 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.failNotAllowed(LayoutInflater.java:525) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.createView(LayoutInflater.java:472) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  ... 19 more 

Pourquoi?

Merci à l'avance

Répondre

20

widgets App permettent uniquement la liste limitée des types de widgets et mise en page de vue qui peuvent être utilisés en leur sein. Il semble que TableLayout n'est pas supporté. Des développeurs Google documentation:

Un objet RemoteViews (et, par conséquent, un Widget App) peut soutenir les classes de mise en page suivantes:

* FrameLayout 
* LinearLayout 
* RelativeLayout 

et les classes de widget ci-dessous:

* AnalogClock 
* Button 
* Chronometer 
* ImageButton 
* ImageView 
* ProgressBar 
* TextView 

Les descendants de ces classes ne sont pas supportés.

+0

Merci, il semble que j'ai raté cette partie de la documentation! – tbruyelle