安卓:InflateException:二进制XML文件行:错误膨胀类<未知>

8

我已经阅读了几篇关于这个问题的文章,但没有帮助到我。这个问题只会在大屏幕设备上出现。以下是堆栈跟踪。

Logcat输出

03-13 15:21:18.863: E/AndroidRuntime(6334): FATAL EXCEPTION: main
03-13 15:21:18.863: E/AndroidRuntime(6334): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dzo.seattlesnightlife/com.dzo.seattlesnightlife.StoreDescription}: android.view.InflateException: Binary XML file line #29: Error inflating class <unknown>
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.os.Looper.loop(Looper.java:137)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.app.ActivityThread.main(ActivityThread.java:4745)  
03-13 15:21:18.863: E/AndroidRuntime(6334):     at java.lang.reflect.Method.invokeNative(Native Method)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at java.lang.reflect.Method.invoke(Method.java:511)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at dalvik.system.NativeStart.main(Native Method)
03-13 15:21:18.863: E/AndroidRuntime(6334): Caused by: android.view.InflateException: Binary XML file line #29: Error inflating class <unknown>
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.createView(LayoutInflater.java:613)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.parseInclude(LayoutInflater.java:805)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:736)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)  
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.app.Activity.setContentView(Activity.java:1867)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at com.dzo.seattlesnightlife.StoreDescription.init(StoreDescription.java:195)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at com.dzo.seattlesnightlife.StoreDescription.onCreate(StoreDescription.java:188)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.app.Activity.performCreate(Activity.java:5008)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
03-13 15:21:18.863: E/AndroidRuntime(6334):     ... 11 more
03-13 15:21:18.863: E/AndroidRuntime(6334): Caused by: java.lang.reflect.InvocationTargetException
03-13 15:21:18.863: E/AndroidRuntime(6334):     at java.lang.reflect.Constructor.constructNative(Native Method)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.LayoutInflater.createView(LayoutInflater.java:587)
03-13 15:21:18.863: E/AndroidRuntime(6334):     ... 30 more
03-13 15:21:18.863: E/AndroidRuntime(6334): Caused by: java.lang.OutOfMemoryError
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:500)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:781)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.content.res.Resources.loadDrawable(Resources.java:1930)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.content.res.Resources.getDrawable(Resources.java:659)  
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173)  
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:881)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:818)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.content.res.Resources.loadDrawable(Resources.java:1915)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.View.<init>(View.java:3336)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.view.ViewGroup.<init>(ViewGroup.java:427)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.widget.LinearLayout.<init>(LinearLayout.java:176)
03-13 15:21:18.863: E/AndroidRuntime(6334):     at android.widget.LinearLayout.<init>(LinearLayout.java:172)
03-13 15:21:18.863: E/AndroidRuntime(6334):     ... 33 more

XML布局文件

<com.dzo.seattlesnightlife.ui.HeaderBar
    android:id="@+id/baseHeaderBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" />

<com.handmark.pulltorefresh.library.PullToRefreshListView
    android:id="@+id/listViewSearch"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/baseHeaderBar"
    android:layout_marginBottom="55dp"
    android:listSelector="@drawable/list_sel"
    android:cacheColorHint="#00000000"
    android:divider="@color/divider_list"
    android:layout_marginTop="-3dp"
    android:dividerHeight="2dp" />

<TextView
    android:id="@+id/txtNoData"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="@string/no_data"
    android:textColor="@color/white"
    android:textSize="18sp"
    android:visibility="gone" />

<ScrollView
    android:id="@+id/scrollLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/baseHeaderBar"
    android:layout_marginBottom="60dp"
    android:scrollbars="none" >

    <LinearLayout
        android:id="@+id/linScrollView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center|top"
        android:orientation="vertical" >

        <RelativeLayout
            android:id="@+id/linImgAddress"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:orientation="horizontal" >

            <LinearLayout
                android:id="@+id/linImgListingPhoto"
                android:layout_width="143dp"
                android:layout_height="143dp"
                android:layout_marginTop="10dp"
                android:background="@drawable/bg_description"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/imgListingPhoto"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:contentDescription="@string/d_desc"
                    android:scaleType="fitXY" />
            </LinearLayout>

            <ImageButton
                android:id="@+id/btnFav"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_gravity="top|left"
                android:layout_marginTop="5dp"
                android:background="@drawable/ic_fav"
                android:contentDescription="@drawable/ic_fav" />

            <LinearLayout
                android:id="@+id/linPromoTitle"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_toRightOf="@+id/linImgListingPhoto"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="5dp"
                android:gravity="top"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/txtListingTitle"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/bg_description"
                    android:gravity="center_vertical|center_horizontal"
                    android:textColor="@color/white"
                    android:textSize="20sp" />

                <LinearLayout
                    android:id="@+id/linAddressWebsite"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:layout_marginTop="3dp"
                    android:background="@drawable/bg_description"
                    android:orientation="vertical" >

                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="32dp"
                        android:id="@+id/relStoreAddress"
                        android:background="@drawable/highlight_rnd_top" >

                        <ImageView
                            android:id="@+id/imgIcMap"
                            android:layout_width="wrap_content"
                            android:layout_height="20dp"
                            android:layout_alignParentLeft="true"
                            android:layout_centerHorizontal="true"
                            android:layout_centerVertical="true"
                            android:layout_marginLeft="5dp"
                            android:contentDescription="@drawable/ic_map"
                            android:src="@drawable/ic_map" />

                        <TextView
                            android:id="@+id/txtStoreAddress"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:layout_toRightOf="@+id/imgIcMap"
                            android:layout_centerVertical="true"
                            android:singleLine="true"
                            android:textColor="@color/white"
                            android:textSize="18sp" />

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="20dp"
                            android:layout_alignParentRight="true"
                            android:layout_centerHorizontal="true"
                            android:layout_centerVertical="true"
                            android:layout_marginRight="2dp"
                            android:contentDescription="@drawable/arrow_white"
                            android:src="@drawable/arrow_white" />
                    </RelativeLayout>

                    <View
                        android:id="@+id/view2"
                        android:layout_width="fill_parent"
                        android:layout_height="1dp"
                        android:layout_marginBottom="0sp"
                        android:background="@color/line" />

                    <RelativeLayout
                        android:id="@+id/relStoreContact"
                        android:layout_width="match_parent"
                        android:layout_height="34dp"
                        android:background="@drawable/highlight_mid" >

                        <ImageView
                            android:id="@+id/imgIcCall"
                            android:layout_width="wrap_content"
                            android:layout_height="20dp"
                            android:layout_marginLeft="5dp"
                            android:layout_alignParentLeft="true"
                            android:layout_centerHorizontal="true"
                            android:layout_centerVertical="true"
                            android:contentDescription="@drawable/ic_call"
                            android:src="@drawable/ic_call" />

                        <TextView
                            android:id="@+id/txtStorePhone"
                            android:layout_toRightOf="@+id/imgIcCall"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="2dp"
                            android:layout_centerVertical="true"
                            android:singleLine="true"
                            android:textColor="@color/white"
                            android:textSize="18sp" />

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="20dp"
                            android:layout_alignParentRight="true"
                            android:layout_centerHorizontal="true"
                            android:layout_centerVertical="true"
                            android:layout_marginRight="2dp"
                            android:contentDescription="@drawable/arrow_white"
                            android:src="@drawable/arrow_white" />
                    </RelativeLayout>

                    <View
                        android:id="@+id/view3"
                        android:layout_width="fill_parent"
                        android:layout_height="1dp"
                        android:layout_marginBottom="0sp"
                        android:background="@color/line" />

                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="32dp"
                        android:id="@+id/relStoreWeb"
                        android:background="@drawable/highlight_rnd_bottom" >

                        <ImageView
                            android:id="@+id/imgIcWeb"
                            android:layout_width="wrap_content"
                            android:layout_height="20dp"
                            android:layout_alignParentLeft="true"
                            android:layout_centerHorizontal="true"
                            android:layout_centerVertical="true"
                            android:layout_marginLeft="5dp"
                            android:contentDescription="@drawable/ic_web"
                            android:src="@drawable/ic_web" />

                        <TextView
                            android:layout_toRightOf="@+id/imgIcWeb"
                            android:id="@+id/txtStoreWebsite"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_centerVertical="true"
                            android:singleLine="true"
                            android:textColor="@color/white"
                            android:textSize="18sp" 
                            android:text="@string/visit_web"/>

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="20dp"
                            android:layout_alignParentRight="true"
                            android:layout_centerHorizontal="true"
                            android:layout_centerVertical="true"
                            android:layout_marginRight="2dp"
                            android:contentDescription="@drawable/arrow_white"
                            android:src="@drawable/arrow_white" />
                    </RelativeLayout>
                </LinearLayout>
            </LinearLayout>
        </RelativeLayout>

        <LinearLayout
            android:id="@+id/linDescInfo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:layout_marginTop="5dp"
            android:orientation="vertical" >

            <include layout="@layout/part_store_sched_tick" />

            <LinearLayout
                android:id="@+id/linStoreDescTitle"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:layout_gravity="center"
                android:gravity="center|top"
                android:orientation="vertical"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"
                android:layout_marginTop="5dp"
                android:visibility="gone" >

                <TextView
                    android:id="@+id/txtDescTitle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/bg_description"
                    android:gravity="center"
                    android:paddingLeft="5dp"
                    android:paddingRight="5dp"
                    android:singleLine="true"
                    android:text="@string/d_desc"
                    android:textColor="@color/white"
                    android:textSize="20sp" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/linStoreDesc"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"
                android:layout_marginTop="5dp"
                android:background="@drawable/bg_desc"
                android:gravity="center_horizontal"
                android:orientation="vertical"
                android:visibility="gone" >

                <com.dzo.seattlesnightlife.ui.ExpandablePanel
                    android:id="@+id/descPanel"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    custom:animationDuration="25"
                    custom:collapsedHeight="80dp"
                    custom:content="@+id/txtDesc"
                    custom:handle="@+id/expand" >

                    <TextView
                        android:id="@id/txtDesc"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:textSize="18sp"/>

                    <View
                        android:id="@+id/view4"
                        android:layout_width="fill_parent"
                        android:layout_height="1dp"
                        android:layout_marginBottom="0sp"
                        android:background="@color/line"/>

                    <RelativeLayout
                        android:id="@id/expand"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="5dp"
                        android:background="@drawable/txt_highlight"
                        android:visibility="gone">

                        <TextView
                            android:id="@+id/txtShowMoreLess"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_centerInParent="true"
                            android:text="@string/show_more"
                            android:textColor="@color/white"
                            android:textSize="18sp"
                            android:textStyle="bold"
                            android:visibility="gone" />

                        <ImageView
                            android:id="@+id/imgMoreLess"
                            android:layout_width="20dp"
                            android:layout_height="20dp"
                            android:layout_centerInParent="true"
                            android:layout_toRightOf="@+id/txtShowMoreLess"
                            android:background="@drawable/arrow_down"
                            android:contentDescription="@drawable/arrow_down"
                            android:visibility="gone" />
                    </RelativeLayout>
                </com.dzo.seattlesnightlife.ui.ExpandablePanel>
            </LinearLayout>

            <include layout="@layout/part_store_info" />

            <LinearLayout
                android:id="@+id/linShare"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:layout_marginTop="8dp"
                android:gravity="top|center_horizontal"
                android:orientation="vertical" >

                <LinearLayout
                    android:id="@+id/linStoreShareBox"
                    android:layout_width="match_parent"
                    android:layout_height="35dp"
                    android:layout_gravity="top"
                    android:gravity="center_horizontal"
                    android:orientation="vertical" >

                    <TextView
                        android:id="@+id/txtStoreShareTittle"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@drawable/bg_description"
                        android:gravity="center|center_vertical"
                        android:paddingLeft="5dp"
                        android:paddingRight="5dp"
                        android:singleLine="true"
                        android:text="@string/d_share"
                        android:textColor="@color/white"
                        android:textSize="20sp" />
                </LinearLayout>

                <include layout="@layout/share_lay_part" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</ScrollView>

<com.dzo.seattlesnightlife.ui.FooterBar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:id="@+id/baseFooterBar"/>
</RelativeLayout>

每次我在大屏幕设备或模拟器上运行我的应用程序时,都会出现奇怪的异常。查看堆栈时,在 XML 中检查第 29 行,它是 textView 的 android:layout_height。应用程序崩溃的活动行号是 setContentView()OutOfMemoryError 指出我的 drawable 存在问题。因此,我调整了我的 drawable 大小,但没有帮助我解决问题。无法找出崩溃的实际原因。
我的Java文件。抱歉,由于超过正文限制,无法在此处发布它,我对其进行了裁剪,因为它有约 5k 行代码。
好的,当我将堆大小增加到 48 MB 时,应用程序没有崩溃,但是使用 16 MB 堆仍然会崩溃。

无法填充您的自定义视图。 - Pragnani
4个回答

14

如果您调整所使用的图像大小,效果会更好。可能该设备不支持该尺寸。


你是在模拟器上使用它还是在你的移动设备上使用? - Avinash Kumar Pankaj
1
对于大屏幕设备,我在模拟器上运行测试。因为我没有大屏幕设备。 - Nitish
1
是的,你说得对。在我缩小图片之后,一切都正常了。 - Nitish
当我在平板电脑上运行应用程序时,一切都很好,但当我在手机上运行时,它会在膨胀类未知时崩溃。这是由于屏幕大小和图像大小的原因。 - Adnan Bashir

2

你的 XML 错误只是主要错误的结果:OutOfMemoryError

只要你没有找到改进内存管理的线索,你就会遇到这些错误(XML 或其他错误)

你的 XML 正确无误,其中没有错误,在第 29 行是你的应用程序在 OutOfMemoryError 发生时所处的“位置”


所以,接下来我该怎么办,我应该使用MAT吗? - Nitish
你需要考虑强制垃圾回收位图管理(创建/缓存/销毁/最大尺寸)等问题...等等。 - StephaneT
我没有创建任何显式位图。所有我的可绘制对象都在资源中。那么,我该如何管理它们呢? - Nitish

0
我曾经遇到过类似的问题,它选择了比屏幕更大的布局,并将位图缩放到该布局中。然后就出现了内存不足的情况。我把背景和按钮的图片大小缩小了,问题就解决了。接着我发现是因为布局太大超出了屏幕的范围。

0

我认为OutOfMemoryErrorlogcat报告的决定性部分。我将Android虚拟设备的VM堆大小从16MB增加到32MB,现在它可以正常工作了。


没问题,但是在我看来,用户应该在真实设备上使用应用程序,而不是模拟器。 - Nitish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接