Android 网格布局膨胀异常
我想用一个非常简单的Android 网格布局膨胀异常,android,android-layout,android-widget,Android,Android Layout,Android Widget,我想用一个非常简单的GridLayout构建一个小部件,但我得到了一个InflateException: Binary XML file line #2: Error inflating class android.widget.GridLayout Is只发生在4.0和4.2上,Is工作没有问题(版本之间有差异吗?) 有人知道吗 堆栈跟踪 03-12 12:27:49.100: W/AppWidgetHostView(528): updateAppWidget couldn't find a
GridLayout
构建一个小部件,但我得到了一个InflateException:
Binary XML file line #2: Error inflating class android.widget.GridLayout
Is只发生在4.0和4.2上,Is工作没有问题(版本之间有差异吗?)
有人知道吗
堆栈跟踪
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;
导入android.appwidget.AppWidgetManager;
导入android.appwidget.AppWidgetProvider;
导入android.content.Context;
导入android.widget.remoteview;
公共类TestWidget扩展了AppWidgetProvider{
@凌驾
public void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,
int[]appWidgetIds){
final int N=appWidgetIds.length;
RemoteViews rvs=新的远程视图(context.getPackageName(),R.layout.balance_小部件);
//更新所有N个小部件
对于(int i=0;iRemoteView仅允许某些版面在其内容中膨胀,您可以查看列表
例如,您可以看到不允许使用表视图。
您的logcat消息说不允许使用GridView,而文档说是这样。
我想这是一个全新的功能,在4.2或4.1之前的版本中是不允许的
您可能应该在远程视图中使用另一种布局类型。远程视图只允许某些布局在其内容中膨胀,您可以看到列表
例如,您可以看到不允许使用表视图。
您的logcat消息说不允许使用GridView,而文档说是这样。
我想这是一个全新的功能,在4.2或4.1之前的版本中是不允许的
您可能应该在远程视图中使用另一种布局类型。您介意发布异常的完整堆栈跟踪吗?请不要在标题前面加上Android
,底部的标记已经足够了。因此,我包括完整堆栈跟踪和其他内容您介意发布异常的完整堆栈跟踪吗?以及请不要在标题前面加上Android的前缀,底部的标签已经足够了。所以我包括了完整的stacktrace等等,谢谢你的猜测。我想你是对的,我也在搜索这种类型的东西,我发现这句话说gridlayout在Api版本16中是可用的。16是4.1,所以它可能在Api版本16中不可用n API v15,android 4.0:/我的想法也是如此,但我不喜欢这方面的文档:(这与API版本不在文本中有关。谢谢你的猜测。我想你是对的,我也在再次搜索这种类型,我发现这样一句话,即gridlayout在API版本16中可用。16是4.1,因此它可能在API v15、android 4.0上不可用:/n我的想法也是对的,但我不喜欢这方面的文档:(即与API版本不符的文本)
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);
}
}
}