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>
Inflate例外は実際には問題ではありませんが、実際にはレイアウト内の別のより深い問題に起因し、InflateExceptionにラップされます。よくある問題は、描画可能なリソースを読み込んでいるimageviewを膨張させようとしたときのメモリ不足の例外です。このリソースの1つが高いピクセル解像度を持っている場合、大量のメモリが必要になり、インフレ例外が発生します。
したがって、基本的に、ドローアブル画像のピクセル解像度がレイアウトに最低限必要であることを確認してください。
ViewFlipper
は、レイアウトの拡張中にすべての画像をメモリにロードします。画像が大きいため、多くのメモリが必要になるため、ViewFlipper
をImageSwitcher
に置き換えました。これは、ViewFlipper
のようなアニメーションで画像を変更できますが、一度に1つの画像のみを読み込みます。
これは、サポートライブラリを使用してVectorDrawable
を使用し、app:srcCompat
の代わりにAndroid:src
を使用するのを忘れた場合にも発生する可能性があります。
正確なエラー:バイナリXMLファイル行#XX:クラスImageViewの膨張エラー
質問はすでに回答済みですが、この種の問題に誰かが遭遇する可能性があると考えて投稿しています。
私の場合の問題は、res/layout /フォルダからレイアウトを参照し、res/values/dimensから@dimensの値を参照する電話にアプリケーションをロードしていることです。/dimens。
私は実際に既存のプロジェクトのUIを更新しています。
私はIDE Eclipseを使用しているため、このフォルダに関係なく、値からのすべての値とvalues-xlargeフォルダを表示するレイアウトフォルダのxmlを書くときにヒントのためにCtrl +スペースを使用しているため書いています。
また、両方のファイルの値は、異なる画面にマッピングするために同じでなければならないことも知っています。
これが誰かがこの種の愚かな問題に出くわすのを助けるかもしれないことを願っています。
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();
}
私の画像サイズは14Kbだけですが、問題はデザイナーが1011px x 1819pxを与えたということです(解像度が高すぎるためInflateExceptionが発生します)
テーマをマテリアルテーマとして選択したため、このエラーが発生しました。しかし、4.4.2でアプリを実行しようとしていたため、このエラーが発生しました。
解決策:テーマとしてTheme_holoを選択します
このリンク が役立つ場合があります。マニフェストで問題を確認してください。再び発生する場合は、スタックトレース全体を投稿して、エラーが実際に何であるかを確認してください。
編集:これを確認したと確信していますが、TourActivityレイアウトに使用するXMLファイルの12行目は何ですか?
私は同じバグに遭遇し、根本的な理由は次のとおりです。
アプリケーションコンテキストを使用してビューを膨らませます。
Activity Contextで膨らませるとバグが修正されました。
私にとっては、ログ猫のエラーメッセージは実際には不十分だったので、問題の原因を突き止めるために私がしたことは次のとおりです。
(log catエラーメッセージでは、HomeFragment.Javaで特定のレイアウトを拡張しているときにエラーが発生したと言われました)
Evaluate expression
を実行しました:Run > Evaluate Expression
またはalt - F8
tools:targetApi="Lollipop"
を使用した描画可能なファイルです(バグは古いデバイスでのみ発生しました)。誰かが同様の問題に遭遇した場合、私はビューを膨らませている間にそのような問題を抱えていました:
View.inflate(getApplicationContext(), R.layout.my_layout, null)
getApplicationContext()
をthis
で置き換えることにより修正
同じエラーが発生し、drawableをdrawable-mdpiフォルダーからdrawableフォルダーに移動することを解決しました。 Eclipseではすべてが完全に機能し、Android Studioではこれらのinいランタイムエラーが発生したため、気づくまでに時間がかかりました。
注の編集: EclipseからAndroid Studioに移行していて、プロジェクトがEclipseから来ている場合、それが起こる可能性があるため、Android StudioではEclipseとは少し異なることに注意してください。
私の場合、このエラーはフローティングアクションボタンを使用してAndroid:backgroundTint="#000"
を設定したときに発生します。その後、backgroundTint
を設定しないでください。問題は解決しました。お役に立てば幸いです。
答えられた質問であることは知っていますが、私が直面した原因はわかりません。
Android Studioが私のドロウアブルを/ drawable-V24に置いていたのです。私のエミュレータはAPI 23です。そのため、最終的には見つかりません。
解決策は、すべてのドロアブルを/ drawableフォルダーに移動することでした(-24なし)。
私はこのスレッドが古いことを知っていますが、他の誰も眠れぬ夜を過ごさないようにまだ答えています。
古いプロジェクトをリファクタリングしていました。そのレイアウトファイルにはすべて、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
に置き換えて、すべての作業をやり直します。すべてが修正されました。
ステップ5:すべて正常に動作しています。
「drawable-24」フォルダから「drawable」フォルダに画像ファイルをコピーする必要があります。
私は今この問題を抱えていて、それが何であるかを理解することができました。問題を引き起こしていた私の値の色を参照していました。そのため、ドロップダウンの候補から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>
それを通常の色に置き換えると、問題が解決しました。
私は同じ問題を抱えていましたが、drawableフォルダの画像の前に(24)でdrawable-v24を削除し、それらを通常のdrawableに置き換えて解決しました。
同じエラーが見つかりましたが、エラーが何であるかを特定するのに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 !
/>
これがお役に立てば幸いです。
私の場合、レイアウトファイルで使用するライブラリUIコンポーネントの完全なパッケージ名を指定する必要があります。
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}
私も同様の問題に直面しました。誰にとっても、これはコードのさまざまな不適切な使用法の問題である可能性があります
最も無視される要因の1つは、ビューの膨張時の正しいコンテキストの使用です。アクティビティコンテキストが必要なApplicationContextを使用していないことを確認してください。 ApplicationContextは常にエラーになるとは限りませんが、ビュー階層によっては重要になる場合があります。
4日間でActivityの代わりにApplicationContextを使用して、BADコンテキストの問題を解決しました!ハッピーコーディング!!
私にとっては、同じレイアウトファイルでxmlベクターグラフィックス画像と通常のpngを混在させようとしたため、
xmlベクターグラフィックスをpngに置き換えた後にのみ動作し始めました
私は同じ問題に直面していました。Viewではなくxmlでviewタグを使用していました。 Viewクラスに置き換えると、問題が修正されました。
それがあなたにも役立つことを願っています。