我在Android应用中遇到了奇怪的行为。我有一个可绘制的walkthrough_safe.png
,并且在drawable-mdpi
,drawable-hdpi
和drawable-xhdpi
个文件夹中有一个版本。
我在分析中看到这种崩溃
{main} android.view.InflateException: Binary XML file line #7: Error inflating class
<unknown> at android.view.LayoutInflater.createView(LayoutInflater.java:613) at
com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:
56) at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) at
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) at
android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at
android.view.LayoutInflater.inflate(LayoutInflater.java:489) at
android.view.LayoutInflater.inflate(LayoutInflater.java:396) at
com.a.b.activity.WalkThroughLoginActivity$WalkthroughFragment.onCreateView(WalkThroughLoginA
ctivity.java:247) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1504)
at android.support.v4.app.y.a(FragmentManager.java:942) at
android.support.v4.app.y.a(FragmentManager.java:1121) at
android.support.v4.app.l.run(BackStackRecord.java:682) at
android.support.v4.app.y.d(FragmentManager.java:1484) at
android.support.v4.app.y.b(FragmentManager.java:482) at
android.support.v4.app.ad.finishUpdate(FragmentPagerAdapter.java:141) at
android.support.v4.view.ViewPager.a(ViewPager.java:1073) at
android.support.v4.view.ViewPager.b(ViewPager.java:919) at
android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441) at
android.view.View.measure(View.java:15264) at
android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617) at
android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399) at
android.view.View.measure(View.java:15264) at
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) at
android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at
android.view.View.measure(View.java:15264) at
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) at
android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390) at
android.widget.LinearLayout.measureVertical(LinearLayout.java:681) at
android.widget.LinearLayout.onMeasure(LinearLayout.java:574) at
android.view.View.measure(View.java:15264) at
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) at
android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at
android.view.View.measure(View.java:15264) at
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) at
android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390) at
android.widget.LinearLayout.measureVertical(LinearLayout.java:681) at
android.widget.LinearLayout.onMeasure(LinearLayout.java:574) at
android.view.View.measure(View.java:15264) at
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916) at
android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at
com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2339) at
android.view.View.measure(View.java:15264) at
android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2131) at
android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1242) at
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1435) at
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1127) at
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4606) at
android.view.Choreographer$CallbackRecord.run(Choreographer.java:747) at
android.view.Choreographer.doCallbacks(Choreographer.java:567) at
android.view.Choreographer.doFrame(Choreographer.java:536) at
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:733) at
android.os.Handler.handleCallback(Handler.java:615) at
android.os.Handler.dispatchMessage(Handler.java:92) at
android.os.Looper.loop(Looper.java:153) at
android.app.ActivityThread.main(ActivityThread.java:5006) at
java.lang.reflect.Method.invokeNative(Native Method) at
java.lang.reflect.Method.invoke(Method.java:511) at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821) at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) at
dalvik.system.NativeStart.main(Native Method) Caused by:
java.lang.reflect.InvocationTargetException at
java.lang.reflect.Constructor.constructNative(Native Method) at
java.lang.reflect.Constructor.newInstance(Constructor.java:417) at
android.view.LayoutInflater.createView(LayoutInflater.java:587) ... 59 more Caused by:
android.content.res.Resources$NotFoundException: File res/drawable-mdpi-
v4/walkthrough_safe.png from drawable resource ID #0x7f02015c at
android.content.res.Resources.loadDrawable(Resources.java:2054) at
android.content.res.TypedArray.getDrawable(TypedArray.java:601) at android.widget.ImageView.
<init>(ImageView.java:120) at android.widget.ImageView.<init>(ImageView.java:110) ... 62
more Caused by: java.io.FileNotFoundException: res/drawable-mdpi-v4/walkthrough_safe.png at
android.content.res.AssetManager.openNonAssetNative(Native Method) at
android.content.res.AssetManager.openNonAsset(AssetManager.java:410) at
android.content.res.Resources.loadDrawable(Resources.java:2046) ... 65 more
在WalkThroughLoginActivity.java:247
行中我有这个:
inflater.inflate(R.layout.fragment_login_walkthrough_2,
container, false);
这是fragment_login_walkthrough_2.xml
的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
style="@style/icon_walkthrough"
android:src="@drawable/walkthrough_safe" />
<TextView
style="@style/title_walkthrough"
android:layout_marginTop="@dimen/margin_walktrough_title"
android:text="@string/walkthrough2_title" />
<TextView
style="@style/text_walkthrough"
android:text="@string/walkthrough2_subtitle"/>
</LinearLayout>
请正确,如果我错了,但在我看来,android正在查找我在错误的文件夹(drawable-mdpi-v4
)中的drawable,这个obvioulsy不存在。不仅如此,在找不到之后,它还没有回到更通用的文件夹,例如我们drawable-mdpi
。
我错过了什么吗?