web-dev-qa-db-ja.com

Android:InflateExceptionの発生元を追跡する方法は?

アプリケーションを起動すると、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

私のアプリケーションは、次のスプラッシュ画面で始まります。

<?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>

スプラッシュは、スプラッシュ画面に表示される画像です。アプリにドロウアブルを保存するためにこれらの4つのフォルダーがあります。

/ res/drawable-hdpi
/res/drawable-ldpi
/res/drawable-mdpi
/res/drawable-nodpi

スプラッシュ画像には、最初の3つの独自のバージョンがあり、適切に表示されます。 ImageViewからsrcプロパティを削除すると、画像は削除されますが、例外は削除されません。

例外の原因を探す場所について少し迷っています。これが本当にこのレイアウトファイルなどの問題なのかさえわかりません。

この警告の原因をどのように見つけますか?

39
Janusz

私はまったく同じエラーがありました。意味のある唯一のxml行24は、たまたまアプリケーションの終了タグであるアプリケーションマニフェストでした。アプリに追加していたカスタムテーマにまでさかのぼります。スタイルの親を定義していませんでした。必要なのは、parent = "Android:Theme"をスタイルに追加するだけで、エラーはなくなりました。

<style name="MyTheme" parent="Android:Theme">
...
</style>
52
Garrett

私は同じ問題を抱えていました。それは、アクティビティコンテキストではなくアプリケーションコンテキストを渡したためです。

3
Eng.Fouad

2.0エミュレータで実行すると、同様のエラーが発生しました。 APIの新しいバージョン(バージョン7、2.1-update1)を使用しましたが、動作しました。

1
Nada
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

その行は景品です。システムは、リソースの1つ、おそらく「src」リソース、おそらくAndroid:src="@drawable/splash"

1
Jim Blackler

私はこれが少し遅いことを知っていますが、私はこれを理解しようと一日中過ごしました-そして最後に this SO質問の助けを借りて私が試していた例は、後のAPIの機能を使用していて、ファイルが変更されていないためLintはそれをキャッチしていませんでした。XMLファイルをランダムに編集してファイルを保存するとすぐに、 APIが表示されました。

0
Gravitoid

なぜアプリがクラッシュするのか、なぜlogcatが表示されないのかという答えを見つけるための多くのmanyただしい研究の後

私はこれを交換しました

Android:configChanges="orientation|keyboardHidden"

Android:configChanges="keyboardHidden|orientation|screenSize"

アクティビティタグ内。

0
Ahmad Arslan

エラーはXMLファイルの24行目にあります。その行には何が含まれていますか?エラーメッセージの外観

Android.view.InflateException: Binary XML file line #24: Error inflating class <unknown>

カスタムクラスを使用していて、何かを適切に定義していない。たとえば、パッケージ名を適切に定義しましたか?たぶん、そのコンストラクタはフォーマットされていませんか?より多くの情報を提供するには、XMLファイル、特に24行目付近を確認する必要があります。

0
Steve Haley