Android 安卓:如何追踪膨胀异常的起源?

Android 安卓:如何追踪膨胀异常的起源?,android,debugging,android-layout,Android,Debugging,Android Layout,启动应用程序时,我在Logcat中收到以下警告: 04-09 10:28:17.830: WARN/WindowManager(52): Exception when adding starting window 04-09 10:28:17.830: WARN/WindowManager(52): android.view.InflateException: Binary XML file line #24: Error inflating class <unknown> 04-0

启动应用程序时,我在Logcat中收到以下警告:

04-09 10:28:17.830: WARN/WindowManager(52): Exception when adding starting window
04-09 10:28:17.830: WARN/WindowManager(52): android.view.InflateException: Binary XML file line #24: Error inflating class <unknown>
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.createView(LayoutInflater.java:513)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2153)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2207)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1395)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:818)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.server.WindowManagerService$H.handleMessage(WindowManagerService.java:8794)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.os.Looper.loop(Looper.java:123)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.server.WindowManagerService$WMThread.run(WindowManagerService.java:531)
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: java.lang.reflect.InvocationTargetException
04-09 10:28:17.830: WARN/WindowManager(52):     at android.widget.FrameLayout.<init>(FrameLayout.java:79)
04-09 10:28:17.830: WARN/WindowManager(52):     at java.lang.reflect.Constructor.constructNative(Native Method)
04-09 10:28:17.830: WARN/WindowManager(52):     at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.createView(LayoutInflater.java:500)
04-09 10:28:17.830: WARN/WindowManager(52):     ... 13 more
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1}
04-09 10:28:17.830: WARN/WindowManager(52):     at android.content.res.Resources.loadDrawable(Resources.java:1677)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.widget.FrameLayout.<init>(FrameLayout.java:91)
04-09 10:28:17.830: WARN/WindowManager(52):     ... 17 more
04-09 10:28:17.830:警告/WindowManager(52):添加启动窗口时出现异常
04-09 10:28:17.830:WARN/WindowManager(52):android.view.InflateException:二进制XML文件行#24:膨胀类时出错
04-09 10:28:17.830:WARN/WindowManager(52):在android.view.LayoutInflater.createView(LayoutInflater.java:513)
04-09 10:28:17.830:WARN/WindowManager(52):在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
04-09 10:28:17.830:WARN/WindowManager(52):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
04-09 10:28:17.830:WARN/WindowManager(52):在android.view.LayoutInflater.充气(LayoutInflater.java:385)
04-09 10:28:17.830:WARN/WindowManager(52):在android.view.LayoutInflater.充气(LayoutInflater.java:320)
04-09 10:28:17.830:WARN/WindowManager(52):在android.view.LayoutInflater.充气(LayoutInflater.java:276)
04-09 10:28:17.830:WARN/WindowManager(52):位于com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2153)
04-09 10:28:17.830:WARN/WindowManager(52):位于com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2207)
04-09 10:28:17.830:WARN/WindowManager(52):在com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1395)
04-09 10:28:17.830:WARN/WindowManager(52):位于com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:818)
04-09 10:28:17.830:WARN/WindowManager(52):位于com.android.server.WindowManagerService$H.handleMessage(WindowManagerService.java:8794)
04-09 10:28:17.830:WARN/WindowManager(52):在android.os.Handler.dispatchMessage(Handler.java:99)上
04-09 10:28:17.830:WARN/WindowManager(52):在android.os.Looper.loop(Looper.java:123)
04-09 10:28:17.830:WARN/WindowManager(52):位于com.android.server.WindowManagerService$WMThread.run(WindowManagerService.java:531)
04-09 10:28:17.830:警告/WindowManager(52):由以下原因引起:java.lang.reflect.InvocationTargetException
04-09 10:28:17.830:WARN/WindowManager(52):在android.widget.FrameLayout.(FrameLayout.java:79)
04-09 10:28:17.830:WARN/WindowManager(52):位于java.lang.reflect.Constructor.constructNative(本机方法)
04-09 10:28:17.830:WARN/WindowManager(52):位于java.lang.reflect.Constructor.newInstance(Constructor.java:446)
04-09 10:28:17.830:WARN/WindowManager(52):在android.view.LayoutInflater.createView(LayoutInflater.java:500)
04-09 10:28:17.830:警告/窗口管理器(52):。。。还有13个
04-09 10:28:17.830:WARN/WindowManager(52):原因:android.content.res.Resources$NotFoundException:资源不是可绘制的(颜色或路径):类型值{t=0x2/d=0x1010059 a=-1}
04-09 10:28:17.830:WARN/WindowManager(52):位于android.content.res.Resources.loadDrawable(Resources.java:1677)
04-09 10:28:17.830:WARN/WindowManager(52):在android.content.res.TypedArray.getDrawable(TypedArray.java:548)
04-09 10:28:17.830:WARN/WindowManager(52):在android.widget.FrameLayout.(FrameLayout.java:91)
04-09 10:28:17.830:警告/窗口管理器(52):。。。还有17个
我的应用程序从以下启动屏幕开始:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:windowBackground="@color/white" android:background="@color/white"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:foregroundGravity="center">

    <ImageView android:id="@+id/ImageView01"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:adjustViewBounds="true" android:scaleType="centerInside"
        android:src="@drawable/splash" android:layout_gravity="center" />


</ScrollView>

Splash是在启动屏幕中显示的图像。我有四个文件夹,用于在我的应用程序中存储Drawable:

/分辨率/可绘制hdpi
/分辨率/可绘制ldpi
/分辨率/可绘制mdpi
/res/可绘制节点PI

飞溅图像在前三个图像中有其自己的版本,并正确显示。 从ImageView中删除src属性会删除图像,但不会删除异常

我有点不知道从哪里查找异常的原因。我甚至不知道这是否真的是这个布局文件中的一个问题

您将如何着手查找此警告的原因

04-09 10:28:17.830: WARN/WindowManager(52): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1

那条线是免费的。系统对您的一个资源不满意,可能是“src”资源,可能是
android:src=“@drawable/splash”
错误在XML文件的第24行。那一行包含什么?根据错误消息的外观

android.view.InflateException: Binary XML file line #24: Error inflating class <unknown>
android.view.InflateException:二进制XML文件行#24:膨胀类时出错

您正在使用自定义类,但尚未正确定义某些内容。例如,您是否正确定义了包名?也许它的构造函数没有格式化?我们必须查看XML文件,特别是第24行的内容,才能提供更多信息。

我也有同样的错误。唯一有意义的xml第24行是我的应用程序清单,它恰好是应用程序的结束标记。我将其追溯到我为应用程序添加的自定义主题——我没有定义样式的父级。我所需要做的就是将parent=“android:Theme”添加到我的样式中,我的错误就消失了

<style name="MyTheme" parent="android:Theme">
...
</style>

...

在2.0模拟器上运行时,我遇到了类似的错误。我使用了一个更新版本的API(版本7,2.1-update1),它工作正常。

我也遇到了同样的问题,这是因为我传递的是应用程序上下文而不是活动上下文。

我知道这有点晚了,但我花了一整天的时间试图弄清楚这一点,最后在问题的帮助下,我意识到在我尝试的示例中有一个XML文件使用了后来API的一个功能,Lint没有捕捉到它,因为该文件没有改变。我对XML文件进行了随机编辑并保存了该文件后,出现了一个关于后来的API的错误。

在进行了大量紧张的研究之后,我找到了为什么应用程序会崩溃以及为什么它没有显示日志的答案

我刚换了这个

android:configChanges="orientation|keyboardHidden"


在活动标记中。

好的,查找一个有24行的文件
XML文件行#24
几乎我所有的布局文件都比24行长。我在cas中设置不可绘制的尺寸时遇到了类似的问题
android:configChanges="keyboardHidden|orientation|screenSize"