我在Android应用中使用GridView
。一切都在我的手机上完美运行,但当我尝试在平板电脑模拟器上运行应用程序时,它在开始时崩溃了。
错误为E/AndroidRuntime(466): java.lang.RuntimeException: Unable to start activity ComponentInfo{****/***.Main}: java.lang.RuntimeException: Unable to start activity ComponentInfo{***/***.views.calendar.CalendarView}: android.view.InflateException: Binary XML file line #42: Error inflating class android.widget.GridView
第42行只有一个<GridView>
标记。
然后堆栈跟踪显示Caused by: android.view.InflateException: Binary XML file line #42: Error inflating class android.widget.GridView
,Caused by: java.lang.reflect.InvocationTargetException
并完成:
02-11 23:57:17.079: E/AndroidRuntime(466): Caused by: android.content.res.Resources$NotFoundException: File from drawable resource ID #0x1020004
02-11 23:57:17.079: E/AndroidRuntime(466): at android.content.res.Resources.loadDrawable(Resources.java:1874)
02-11 23:57:17.079: E/AndroidRuntime(466): at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
02-11 23:57:17.079: E/AndroidRuntime(466): at android.widget.AbsListView.<init>(AbsListView.java:711)
02-11 23:57:17.079: E/AndroidRuntime(466): at android.widget.GridView.<init>(GridView.java:76)
02-11 23:57:17.079: E/AndroidRuntime(466): at android.widget.GridView.<init>(GridView.java:72)
我不使用任何LayoutParams,我的xml布局如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/calendar_relativeLayout_main"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:id="@+id/calendar_relativeLayout_infoBar"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="@color/calendar_infoBar_background" >
<ImageButton
android:id="@+id/calendar_imageButton_previousMonth"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:background="@null"
android:src="@drawable/ic_calendar_prev" />
<ImageButton
android:id="@+id/calendar_imageButton_nextMonth"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:background="@null"
android:src="@drawable/ic_calendar_next" />
<TextView
android:id="@+id/calendar_textView_currentMonth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="February 2012"
android:textSize="17dp" />
</RelativeLayout>
<GridView
android:id="@+id/calendar_gridView_currentCalendar"
android:layout_width="fill_parent"
android:layout_height="240dp"
android:layout_below="@+id/calendar_relativeLayout_infoBar"
android:numColumns="7"
android:isScrollContainer="false"
android:listSelector="@android:id/empty">
</GridView>
</RelativeLayout>
我不明白的是,GridView
如何在手机上使用并且无法在平板电脑上使用...
提前感谢任何线索......
答案 0 :(得分:3)
android:listSelector="@android:id/empty"
据我所知listSelector attribute期望引用drawable,而不是id。 @android:id/empty
可用于为ListView和GridView声明一个可选的“空”视图,我很确定它并不意味着如上所述。有关详细信息,请参阅ListActivity
。尝试引用实际的可绘制(或颜色),例如@null
或@android:color/transparent
使选择器“隐身”(或者只将高度设置为“0”)。
或者,您可能正在使用资源限定符来阻止平板电脑找到适当的资源。请阅读'How Android Finds the Best-matching Resource'解释,了解更多详情。但是,由于您没有直接在GridView声明中引用可绘制资源,我怀疑这是问题所在。