web-dev-qa-db-ja.com

android.view.InflateException:バイナリXMLファイルの行#12:クラス<unknown>の膨張エラー

Subjに表示される種類のエラーを多数受信しています。これらのエラーはときどき発生するようで、再現できません。スタックから、さまざまなレイアウトリソースでこのようなエラーが発生する可能性があることがわかります。 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>
128
Solvek

Inflate例外は実際には問題ではありませんが、実際にはレイアウト内の別のより深い問題に起因し、InflateExceptionにラップされます。よくある問題は、描画可能なリソースを読み込んでいるimageviewを膨張させようとしたときのメモリ不足の例外です。このリソースの1つが高いピクセル解像度を持っている場合、大量のメモリが必要になり、インフレ例外が発生します。

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

252
vnportnoy

ViewFlipperは、レイアウトの拡張中にすべての画像をメモリにロードします。画像が大きいため、多くのメモリが必要になるため、ViewFlipperImageSwitcherに置き換えました。これは、ViewFlipperのようなアニメーションで画像を変更できますが、一度に1つの画像のみを読み込みます。

24
Solvek

これは、サポートライブラリを使用してVectorDrawableを使用し、app:srcCompatの代わりにAndroid:srcを使用するのを忘れた場合にも発生する可能性があります。

正確なエラー:バイナリXMLファイル行#XX:クラスImageViewの膨張エラー

そのリンクを参照

19
lujop

質問はすでに回答済みですが、この種の問題に誰かが遭遇する可能性があると考えて投稿しています。

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

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

私はIDE Eclipseを使用しているため、このフォルダに関係なく、値からのすべての値とvalues-xlargeフォルダを表示するレイアウトフォルダのxmlを書くときにヒントのためにCtrl +スペースを使用しているため書いています。

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

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

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();
    }
8
Wildan Muhlis

私の画像サイズは14Kbだけですが、問題はデザイナーが1011px x 1819pxを与えたということです(解像度が高すぎるためInflateExceptionが発生します)

5
Han Heong Ho

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

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

このリンク が役立つ場合があります。マニフェストで問題を確認してください。再び発生する場合は、スタックトレース全体を投稿して、エラーが実際に何であるかを確認してください。

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

4
kcoppock

私は同じバグに遭遇し、根本的な理由は次のとおりです。

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

Activity Contextで膨らませるとバグが修正されました。

4
cox

私にとっては、ログ猫のエラーメッセージは実際には不十分だったので、問題の原因を突き止めるために私がしたことは次のとおりです。

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

  1. レイアウトが膨張する直前にブレークポイントを配置しました
  2. 特定のブレークポイントに到達するまで、アプリケーションをデバッグモードで実行しました
  3. カーソルのある行を選択し、その上でEvaluate expressionを実行しました:
    • Run > Evaluate Expressionまたはalt - F8
  4. その結果、問題の原因に関する詳細情報がわかりました。私の場合は、tools:targetApi="Lollipop"を使用した描画可能なファイルです(バグは古いデバイスでのみ発生しました)。
3
Julian Honma

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

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

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

3
hedisam

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

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

2
Mark

私の場合、このエラーはフローティングアクションボタンを使用してAndroid:backgroundTint="#000"を設定したときに発生します。その後、backgroundTintを設定しないでください。問題は解決しました。お役に立てば幸いです。

2
Luan Si Ho

答えられた質問であることは知っていますが、私が直面した原因はわかりません。

Android Studioが私のドロウアブルを/ drawable-V24に置いていたのです。私のエミュレータはAPI 23です。そのため、最終的には見つかりません。

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

1
alsaleem

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

古いプロジェクトをリファクタリングしていました。そのレイアウトファイルにはすべて、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_lengthAndroid:maxLength = 500に置き換えて、すべての作業をやり直します。すべてが修正されました。

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

1
iCantC

「drawable-24」フォルダから「drawable」フォルダに画像ファイルをコピーする必要があります。

1
Emre Aydemir

私は今この問題を抱えていて、それが何であるかを理解することができました。問題を引き起こしていた私の値の色を参照していました。そのため、ドロップダウンの候補から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フォルダの画像の前に(24)でdrawable-v24を削除し、それらを通常のdrawableに置き換えて解決しました。

0
ghane nikraftar

同じエラーが見つかりましたが、エラーが何であるかを特定するのに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 !
 />

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

0
Williaan Lopes

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

0
christian mini

APIバージョンを確認する必要があります。私はLinearLayoutのように背景色を与えていました

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

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

<?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の問題のようですので、APIレベルがAPI 24を超えている場合はAPIレベルを確認する必要があります。ただし、24未満の場合は、使用を避ける必要があります。ジュートは、通常の色を与えるか、色のグラデーションが混ざった色ではありません。

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

あなたのlinearlayoutsにidを与え、OKなら背景を設定

 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
Sam

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

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

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

4日間でActivityの代わりにApplicationContextを使用して、BADコンテキストの問題を解決しました!ハッピーコーディング!!

0
sud007

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

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

0
Daniel

私は同じ問題に直面していました。Viewではなくxmlでviewタグを使用していました。 Viewクラスに置き換えると、問題が修正されました。

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

0
Kavya Shravan