2013-03-12 98 views
1

我想用一個非常簡單的GridLayout建立一個小部件,但我得到了一個InflateException:網格佈局膨脹例外

Binary XML file line #2: Error inflating class android.widget.GridLayout 

只發生在4.0和4.2是作品沒有問題(是那裏的之間的差異版本?) 有人知道這件事嗎?

堆棧跟蹤

03-12 12:27:49.100: W/AppWidgetHostView(528): updateAppWidget couldn't find any view, 
using error view 
03-12 12:27:49.100: W/AppWidgetHostView(528): android.view.InflateException: Binary XML file line #2: Error inflating class android.widget.GridLayout 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.LayoutInflater.createView(LayoutInflater.java:606) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.RemoteViews.apply(RemoteViews.java:1581) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:289) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.appwidget.AppWidgetHost.createView(AppWidgetHost.java:238) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at com.sonyericsson.home.widget.WidgetManager.getWidgetView(WidgetManager.java:142) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at com.sonyericsson.home.layer.AdapterHelper.getWidgetInfoView(AdapterHelper.java:280) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at com.sonyericsson.home.layer.desktop.DesktopAdapter.getView(DesktopAdapter.java:100) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at com.sonyericsson.paneview.PaneView.ensureItemView(PaneView.java:2343) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at com.sonyericsson.paneview.PaneView.layoutItem(PaneView.java:2294) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at com.sonyericsson.paneview.PaneView.onLayout(PaneView.java:1199) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.View.layout(View.java:11390) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewGroup.layout(ViewGroup.java:4332) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:930) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.View.layout(View.java:11390) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewGroup.layout(ViewGroup.java:4332) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:930) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.View.layout(View.java:11390) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewGroup.layout(ViewGroup.java:4332) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:930) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.View.layout(View.java:11390) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewGroup.layout(ViewGroup.java:4332) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:930) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.View.layout(View.java:11390) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewGroup.layout(ViewGroup.java:4332) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.FrameLayout.onLayout(FrameLayout.java:444) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.View.layout(View.java:11390) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewGroup.layout(ViewGroup.java:4332) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1653) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1511) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.LinearLayout.onLayout(LinearLayout.java:1416) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.View.layout(View.java:11390) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewGroup.layout(ViewGroup.java:4332) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.widget.FrameLayout.onLayout(FrameLayout.java:444) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.View.layout(View.java:11390) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewGroup.layout(ViewGroup.java:4332) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1490) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2455) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.os.Looper.loop(Looper.java:137) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.app.ActivityThread.main(ActivityThread.java:4424) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at java.lang.reflect.Method.invokeNative(Native Method) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at java.lang.reflect.Method.invoke(Method.java:511) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at dalvik.system.NativeStart.main(Native Method) 
03-12 12:27:49.100: W/AppWidgetHostView(528): Caused by: android.view.InflateException: Binary XML file line #2: Class not allowed to be inflated android.widget.GridLayout 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.LayoutInflater.failNotAllowed(LayoutInflater.java:618) 
03-12 12:27:49.100: W/AppWidgetHostView(528): at android.view.LayoutInflater.createView(LayoutInflater.java:558) 
03-12 12:27:49.100: W/AppWidgetHostView(528): ... 49 more 

佈局XML

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    android:useDefaultMargins="true" 
    android:alignmentMode="alignBounds" 
    android:columnOrderPreserved="false" 

    android:columnCount="4" 
    > 

<TextView 
     android:text="Email setup" 
     android:textSize="32dip" 

     android:layout_columnSpan="4" 
     android:layout_gravity="center_horizontal" 
     /> 

<TextView 
     android:text="You can configure email in just a few steps:" 
     android:textSize="16dip" 

     android:layout_columnSpan="4" 
     android:layout_gravity="left" 
     /> 

<TextView 
     android:text="Email address:" 

     android:layout_gravity="right" 
     /> 

<EditText 
     android:ems="10" 
     /> 

<TextView 
     android:text="Password:" 

     android:layout_column="0" 
     android:layout_gravity="right" 
     /> 

<EditText 
     android:ems="8" 
     /> 

<Space 
     android:layout_row="4" 
     android:layout_column="0" 
     android:layout_columnSpan="3" 
     android:layout_gravity="fill" 
     /> 

<Button 
     android:text="Next" 

     android:layout_row="5" 
     android:layout_column="3" 
     /> 

package com.path.testwidget; 

import android.appwidget.AppWidgetManager; 
import android.appwidget.AppWidgetProvider; 
import android.content.Context; 
import android.widget.RemoteViews; 


public class TestWidget extends AppWidgetProvider { 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
      int[] appWidgetIds) { 
     final int N = appWidgetIds.length; 

     RemoteViews rvs= new RemoteViews(context.getPackageName(), R.layout.balance_widget); 

     //update all N widgets 
     for (int i=0; i<N; i++) { 

      int appWidgetId = appWidgetIds[i]; 
      appWidgetManager.updateAppWidget(appWidgetId, rvs); 
     } 

    } 

} 
+1

你介意發佈異常的完整堆棧跟蹤嗎?並且請不要在「Android」前添加標題,底部的標籤綽綽有餘。 – Luksprog 2013-03-12 11:14:06

+0

因此,我包括完整的stacktrace和更多 – Azd325 2013-03-12 11:42:37

回答

4

遠程視窗只允許一些佈局要在其內容誇大你可以看到列表here

您可以看到例如TableView是不允許的。 您的logcat消息說GridView是不允許的,而文檔說它是。 我想這個功能是相當新的,它在4.2之前的版本是不允許的。或4.1。

您應該在遠程視圖中使用另一種佈局類型。

+1

感謝您的猜測。我認爲你的權利,我還在尋找這種類型,我發現這個聲明,該網格佈局是在Api版本16 avaible。 http://code4reference.com/2012/07/android-widget-tutorial/ – Azd325 2013-03-12 13:24:00

+0

16是4.1 ,所以它可能不適用於API v15,android 4.0:/ – Guian 2013-03-12 13:28:56

+1

這也是我的想法,但我不喜歡documentaion到這個:( 這是與API版本不站在文字 – Azd325 2013-03-12 13:29:59