1

GridView在我的 Android 应用程序中使用 a 。一切都在我的手机上完美运行,但是当我尝试在平板电脑模拟器上运行该应用程序时,它一开始就崩溃了。

错误是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.GridViewCaused 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>

我不明白的是,为什么 aGridView可以在手机上使用,而不能在平板电脑上使用......

在此先感谢您提供任何线索...

4

1 回答 1

3
android:listSelector="@android:id/empty"

据我所知,listSelector 属性需要对可绘制对象的引用,而不是 id。@android:id/empty可以用来为 ListView 和 GridView 声明一个可选的“空”视图,我很确定它不应该像上面那样使用。有关ListActivity更多详细信息,请参阅。尝试引用一个实际的可绘制对象(或颜色),例如@null使@android:color/transparent选择器“不可见”(或将高度设置为“0”)。

或者,您可以使用资源限定符来阻止平板电脑找到合适的资源。阅读“Android 如何找到最佳匹配资源”的说明以了解更多详细信息。但是,由于您没有直接在 GridView 声明中引用可绘制资源,我怀疑这是问题所在。

于 2012-02-12T02:39:47.943 回答