android.view.InflateException:Binary XML file line#12:Error inflatating class <unknown>


147

サブジェクトに表示される種類の多くのエラーを受け取っています。これらのエラーは時折発生するようで、再現できません。スタックから、このようなエラーが私のさまざまなレイアウトリソースで発生する可能性があることを知ることができます。XMLのラインも変化しています。

このエラーが発生する理由を誰かが説明できますか?そして、私はこの問題を修正するために何ができますか?

スタック

=============================================================

com.fsp.android.f generated the following exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fsp.android.f/com.life360.android.ui.tour.TourActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

--------- Stack trace ---------
1. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2649)
2. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
3. android.app.ActivityThread.access$2200(ActivityThread.java:131)
4. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
5. android.os.Handler.dispatchMessage(Handler.java:99)
6. android.os.Looper.loop(Looper.java:123)
7. android.app.ActivityThread.main(ActivityThread.java:4702)
8. java.lang.reflect.Method.invokeNative(Native Method)
9. java.lang.reflect.Method.invoke(Method.java:521)
10. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12. dalvik.system.NativeStart.main(Native Method)
-------------------------------

----------- Cause -----------
android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

1. android.view.LayoutInflater.createView(LayoutInflater.java:513)
2. com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
3. android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
4. android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
5. android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
6. android.view.LayoutInflater.inflate(LayoutInflater.java:382)
7. android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8. android.view.LayoutInflater.inflate(LayoutInflater.java:276)
9. com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:208)
10. android.app.Activity.setContentView(Activity.java:1629)
11. com.solvek.sample.ui.BaseActivity.onCreate(BaseActivity.java:23)
12. com.solvek.sample.ui.tour.TourActivity.onCreate(TourActivity.java:161)
13. android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
14. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2587)
15. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
16. android.app.ActivityThread.access$2200(ActivityThread.java:131)
17. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
18. android.os.Handler.dispatchMessage(Handler.java:99)
19. android.os.Looper.loop(Looper.java:123)
20. android.app.ActivityThread.main(ActivityThread.java:4702)
21. java.lang.reflect.Method.invokeNative(Native Method)
22. java.lang.reflect.Method.invoke(Method.java:521)
23. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
24. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
25. dalvik.system.NativeStart.main(Native Method)
-----------------------------

-------- Environment --------
Time =2010-12-20 08:27:35 AM
Device =tmobile/htc_espresso/espresso/espresso:2.1-update1/ERE27/216830:user/release-keys
Make =HTC
Model =T-Mobile myTouch 3G Slide
Product =htc_espresso
App =com.fsp.android.f, version 2.0.9 (build 1232)

これはXMLの結果ですが、そのようなエラーは他のXMLで発生します

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <ViewFlipper android:layout_gravity="fill" android:id="@+id/flipper" android:layout_height="fill_parent" android:layout_width="fill_parent">
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_1"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_2"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_3"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_4"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_5"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_6"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_7"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_8"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_9"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_10"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_11"/>
    </ViewFlipper>

    <LinearLayout android:id="@+id/exit_bar" android:layout_gravity="top" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <Button android:background="@drawable/orange_btn" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:textStyle="bold" android:textColor="#000000" android:shadowColor="#ffffff" android:shadowRadius="1.6" android:shadowDx="1.5" android:shadowDy="1.3" android:id="@+id/exit_tour_btn" android:text="Exit" android:layout_marginLeft="20dip"/>
        <TextView android:layout_height="wrap_content" android:textColor="#ffffff" android:layout_gravity="center" android:layout_width="110dip" android:layout_marginLeft="20dip" android:textSize="16dip" android:textStyle="bold" android:text="Life360 Tour"/>

    </LinearLayout>

    <Button style="@style/BlueBtn" android:text="Continue" android:layout_marginTop="40dip" android:id="@+id/continue_btn" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" />

    <FrameLayout android:id="@+id/bottom_bar" android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/left" android:layout_gravity="left|center" android:background="@drawable/tour_left" android:layout_marginLeft="10dip"/>
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/right" android:layout_gravity="right|center" android:background="@drawable/tour_right" android:layout_marginRight="10dip"/>               
    </FrameLayout>
</merge>

これを確認してください。これは私に役立ちます!stackoverflow.com/questions/9480972/android-tablelayout-error
user1974235

回答:


266

inflate例外は実際には問題ではありませんが、実際にはレイアウトの別のより深い問題が原因であり、それがInflateExceptionでラップされます。一般的な問題は、ドローアブルリソースを読み込んでいるimageviewを膨らませようとしたときのメモリ不足の例外です。このリソースの1つが高いピクセル解像度を持っていると、大量のメモリを消費して、膨張例外が発生します。

したがって、基本的には、ドローアブル画像のピクセル解像度が、レイアウトに最低限必要であることを確認してください。


4
@vnportnoy画像を削除したときにも同じエラーが発生する
Harin Kaklotar

4
私のアプリケーションにはドローアブルがないと思います
Arturas M '25

3
言語バンドルを確認してください。おそらく文字列リソースが欠落しています。これは私の場合問題を引き起こしていました。
Mohammed Subhi Sheikh Quroush 2016

あなたの問題は計装テストである場合、この試してみてください。stackoverflow.com/q/24904445を
ジェリーDestremps

xmlからimageviewを削除した後も、クラスパス「com.android.tools.build:gradle:3.0.0-alpha2」でエラーが発生し、「com.android.support.constraint:constraint-layout:1.0.2」をコンパイルします
サブホー2017年

24

ViewFlipperレイアウトインフレート中にすべての画像をメモリにロードします。私の画像は大きいので多くのメモリViewFlipperを必要ImageSwitcherとするので、アニメーションのように画像を変更できるものに置き換えましたがViewFlipper、一度に1つの画像しかロードしません。


23

これは、VectorDrawableusingサポートライブラリを使用していて、app:srcCompat代わりに使用するのを忘れた場合にも発生します。android:src

正確なエラーは次のとおりです: バイナリXMLファイルの行#XX:クラスImageViewの膨張エラー

そのリンクを参照してください


それをアクティブにしたら、常にapp:srcCompatを使用する必要があります
Mohamed ALOUANE

しかし、これはランダムなクラッシュを生成しません。
Menna-Allah Sami 2017

11

コンストラクタを1つだけ使用してカスタムビューを作成するときに同じエラーが発生しました。カスタムビューのすべてのコンストラクタを定義してみてください。

   public CustomWebView(Context context) {
        super(context);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

11

質問はすでに回答されていますが、このような問題が発生する可能性があると考えて投稿しています。

私の場合の問題は、res / layout /フォルダーからのレイアウトとres / values / dimensからの@dimensの値を参照するアプリケーションを電話にロードしていることです。 / dimens。

既存のプロジェクトのUIを実際に更新しています。

私がこの問題に遭遇したのは、レイアウトフォルダーのxmlを書き込みながらヒントのctrl + spaceを使用しているIDE Eclipseを使用しているためです。

また、両方のファイルの値は、異なる画面にマップするために同じでなければならないことも知っています。

これが誰かがこの種の愚かな問題に遭遇するのを助けるかもしれないことを願っています。


9

私は同じバグに遭遇し、根本的な理由は:

アプリケーションコンテキストを使用してビューを拡張します。

アクティビティコンテキストで拡張すると、バグが修正されました。


6

私の写真のサイズはわずか14Kbですが、問題はデザイナーが1011px x 1819pxを指定したことです(解像度が高すぎるため、InflateExceptionが発生します)。


6

誰かが同様の問題を抱えている場合、私はビューを膨らませている間にそのような問題がありました:

View.inflate(getApplicationContext(), R.layout.my_layout, null)

と置き換えることgetApplicationContext()で修正this


5

マテリアルテーマとしてテーマを選択したため、このエラーが発生しました。しかし、私は4.4.2でアプリを実行しようとしていたため、このエラーが発生しました。

解決策:Theme_holoをテーマとして選択します


私はでのみクラッシュが発生しているため、私の問題はあなたの問題と似ている可能性があります4.2.2。しかし、どこでMaterialテーマからTheme_holoに変更するのですか?キーワードMaterialが私のstyles.xmlまたはに表示されませんv21/styles.xml。私の質問を参照してください:stackoverflow.com/questions/37883677/...
大聖堂Pillon

4

このリンクはあなたを助けるかもしれません。マニフェストに問題がないかチェックしてみてください。再び発生する可能性がある場合は、スタックトレース全体を投稿して、エラーが実際に何であるかを確認できるようにします。

編集:これを確認したと思いますが、TourActivityレイアウトに使用するXMLファイルの12行目は何ですか?


私はこの問題を読みました。これは私のケースではありません(少なくとも私はそれを見ることができません)。質問にスタックを追加します。
10

回答を更新しました。XMLを投稿できますか?よろしければ、XMLが大きすぎない場合は、XML全体を投稿してください。
ケビンコポック

XMLを最初の質問に追加
10

残念ながら、mergeまたはViewFlipperを使用した経験はありません...これが発生するすべてのXMLファイルは、mergeまたはViewFlipperを使用して発生しますか?
Kevin Coppock、

いいえ。他のファイルにはフリッパーのマージはありませんが、同じ問題があります。
10

4

私にとって、log catのエラーメッセージは実際には不十分だったので、問題の原因を突き止めるために次のことを行いました。

(log catエラーメッセージでは、HomeFragment.javaで特定のレイアウトを拡張しているときにエラーが発生したと述べています)

  1. レイアウトが膨らむ直前にブレークポイントを設定しました
  2. 特定のブレークポイントに達するまで、アプリケーションをデバッグモードで実行しました
  3. カーソルで行を選択して実行しEvaluate expressionました:
    • Run > Evaluate Expression または alt - F8
  4. その結果、問題の原因に関する詳細情報が表示されました。私の場合、それは使用しているドローアブルファイルですtools:targetApi="lollipop"(バグは古いデバイスでのみ発生しました)。

ありがとう!これは私が問題を見つけるのに役立ちました!
Sergey Stasishin

4

私は同じエラーを見つけました、そして、エラーが何であったか特定するのに2日かかりました。

エラーは単に私が使用しようとしたためでした: android:background

のではなく: app:srcCompat

SVGファイル内。

あなたの場合、これだと思います

<ImageView 
    android:scaleType="fitXY" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/tour_11"      <-- the error is here !
 />

このように使用することをお勧めします

これをbuild.gradleアプリに追加します

android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

そして

<androidx.appcompat.widget.AppCompatImageView  <-- use **AppCompatImageView** not **ImageView**
        android:scaleType="fitXY" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        app:srcCompat="@drawable/tour_11"
     />

これがお役に立てば幸いです。


3

回答済みの質問であることはわかっていますが、私が直面した原因はわかりません。

Android Studioが私のドローアブルを/ drawable-V24に配置したことが原因でした。私のエミュレーターはAPI 23です。そのため、最終的にはそれを見つけることができません。

解決策は、すべてのドローアブルを/ drawableフォルダーに移動することでした(-24は不可)。


私も同じケースでした。
ラファエル


2

同じエラーが発生し、ドローアブルをフォルダーdrawable-mdpiからフォルダーdrawableに移動することを解決しました。Eclipseですべてが完璧に機能し、Android Studioでこれらの醜いランタイムエラーが発生したため、少し時間がかかりました。

注を編集: EclipseからAndroid Studioに移行する場合、プロジェクトがEclipseから移行される可能性があるため、Android StudioではEclipseと少し異なる点に注意してください。


2

私の場合、フローティングアクションボタンを使用して設定すると、このエラーが発生しますandroid:backgroundTint="#000"。次に、設定しないbackgroundTintで問題を解決します。お役に立てれば幸いです。


本当に私の場合は問題でした。のapp:backgroundTint代わりに使用する必要がありますandroid:backgroundTint
Drago

2

私にとって、私の問題は私が

android:background="?attr/selectableItemBackground"

LinearLayoutの背景に、私がそれを削除すると、テストに合格しました。


1

私は今この問題を抱えており、それが何であるかを理解することができました。問題を引き起こしていた私の値の色を参照していました。したがって、ドロップダウンの候補から1つを使用する代わりに、手動で定義します。


1

APIレベル16(26で問題ありません)でアプリを実行したときにも同じエラーが発生しました。それは私?attrr/colorAccentが自分のドローアブルで使用したからです:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="8dp" />

    <solid android:color="@attr/colorAccent" />

</shape>

これを通常の色に置き換えると問題が解決しました。


1

私は同じ問題を抱えていましたが、drawable-v24を(24)でdrawableフォルダー内の画像の前に削除し、通常のドローアブルで置き換えることで解決しました。


1

私はこのスレッドが古いことを知っていますが、他の誰もが眠れない夜を過ごすべきではないようにそれでも答えます。

私は古いプロジェクトをリファクタリングしていました。そのレイアウトファイルにはすべて、などのハードコードされた属性が含まれていましたandroid:maxLength = 500。それで、res/dimenファイルにとして登録することにし ました<dimen name="max_length">500</dimen>

私のres-valueで約30のレイアウトファイルのリファクタリングを完了しました。何だと思う?次回プロジェクトを実行したとき、同じことを投げ始めましたInflateException

解決策として、すべての変更をやり直し、すべての値を以前と同じに保つ必要がありました。

TLDR;

ステップ1:すべて正常に動作しています。

ステップ2:メンテナンスを強化するために、とに置き換えましたandroid:maxLength = 500<dimen name="max_length">500</dimen>android:maxLength = @dimen/max_lengthそれがすべてがうまくいかなかった場所です(でクラッシュInflateException)。

ステップ3:すべて実行不良

ステップ4:を再びに置き換えandroid:maxLength = @dimen/max_lengthて、すべての作業をやり直しますandroid:maxLength = 500固定してしまった.Everything。

ステップ5:すべて正常に動作しています。


1

すべてのドローアブルアイテムをdrawable-v24からドローアブルに移動することで解決しました


0

私も同様の問題に直面しました。誰にとっても、これは次のようなコードのさまざまな悪い使用法の問題である可能性があります

  1. XMLの誤ったレイアウトタグ
  2. 重いリソースをImageViewに直接ロードするとOOMが発生する
  3. スタイルの使用に関する問題。

最も無視されている要因の1つは、ビューを拡張する際の正しいコンテキストの使用です。アクティビティコンテキストが必要な場所でApplicationContextを使用していないことを確認してください。一方、ApplicationContextは常にエラーになるとは限りませんが、ビューの階層によっては重要になる場合があります。

悪いコンテキストで問題を解決しました(4日間、ActivityではなくApplicationContextを使用しました!解決したら試してください。ハッピーコーディング!!


0

私は同じ問題に直面していました、私はビューの代わりにXMLでビュータグを使用していました。Viewクラスに置き換えると問題が修正されました。

それがあなたにも役立つことを願っています。


0

APIバージョンを確認する必要があります。以前はLinearLayout好きなものに背景色を付けていました

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/as_royalblue"
        android:orientation="vertical"></LinearLayout>

確かに、フォルダas_royalblue.xml内で同じエラーが発生しましたdrawable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="90"
        android:endColor="@color/royalblue_s"
        android:startColor="@color/royalblue_e" />
</shape>

そして、私がそれをどのように修正したか、実際にはApiの問題のようです。API24を超えている場合は、APIレベルを確認して、好きな方法で使用できるようにする必要があります。しかし、24未満の場合、使用を避ける必要があります。突起は、通常の色か、色のグラデーションが混ざった色ではなく1つの色になります。

fun checkAPI_N(): Boolean {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
            return true
        else
            return false
    }

あなたのlinearlayoutsにIDを与え、それが問題なければバックグラウンドを設定します

 if(UtilKotlin.checkAPI_N()){
            linlay_act_menu_container.setBackgroundResource(R.drawable.a_6)
            linlay_act_menu_logo.setBackgroundResource(R.drawable.as_strain)
        }else {//todo normal color background setting}

0

私の場合、レイアウトファイルで使用するライブラリUIコンポーネントの完全なパッケージ名を指定する必要があります。


0

私にとっては、同じレイアウトファイルでxmlベクターグラフィックスイメージと通常のpngを混在させようとしたためです。

xmlベクターグラフィックスをpngに置き換えた後にのみ、機能し始めました


0
  • 私は単にこの問題を解決し、drawable(v24)から画像を削除して、それをdrawableフォルダーに貼り付けるだけでうまくいきます。


0

私は同じエラーがありました Crashlytics奇妙なデバイスからました:Motorola One Vision Android 5.1および20 GB(無料)RAM、ルート権限を取得このデバイスには、元々Android 9.0、4 GB RAMが付属しています

たぶん、誰かが私が現在開発しているアプリをハッキングしようとしていて、マルチAPKを扱うのに問題があります。だから、ドローアブルが見つからず、アプリがクラッシュする

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.