无法膨胀xml,android.content.res.Resources $ NotFoundException

时间:2017-01-26 06:31:32

标签: android xml

我的应用在由android.view.InflateException: Binary XML file line引起的android.content.res.Resources$NotFoundException: File res/drawable/btn_light_bg.xml运行的Android 4.2.1设备上崩溃。 下面是导致问题的按钮:

        <Button
            android:id="@+id/listenDemoBtn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_marginRight="8dp"
            android:layout_marginEnd="8dp"
            android:background="@drawable/btn_dark_bg"
            android:textColor="@android:color/white"
            style="?android:attr/buttonBarButtonStyle"
            android:text="@string/listen_demo_btn"/>

有问题的drawable: 的 button_dark_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="@color/colorPrimary"
    tools:ignore="NewApi">
    <item>
        <shape
            android:shape="rectangle">
            <stroke
                android:width="1dp"
                android:color="@color/colorPrimary" />
            <solid
                android:color="@color/colorBackground" />
            <corners android:radius="2dp"/>
        </shape>
    </item>
</ripple>

日志输出:

01-26 13:11:14.721 16506-16506/us.kostenko.glagol E/AndroidRuntime: FATAL EXCEPTION: main
                                                                    android.view.InflateException: Binary XML file line #75: Error inflating class Button
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                                        at us.kostenko.glagol.catalog.view.DetailBookFragment.onCreateView(DetailBookFragment.kt:56)
                                                                        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184)
                                                                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298)
                                                                        at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323)
                                                                        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136)
                                                                        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092)
                                                                        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998)
                                                                        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709)
                                                                        at android.os.Handler.handleCallback(Handler.java:725)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                        at android.os.Looper.loop(Looper.java:153)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5297)
                                                                        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:833)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
                                                                        at dalvik.system.NativeStart.main(Native Method)
                                                                     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/btn_light_bg.xml from drawable resource ID #0x7f020057
                                                                        at android.content.res.Resources.loadDrawable(Resources.java:1993)
                                                                        at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
                                                                        at android.view.View.<init>(View.java:3335)
                                                                        at android.widget.TextView.<init>(TextView.java:464)
                                                                        at android.widget.Button.<init>(Button.java:107)
                                                                        at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:66)
                                                                        at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:62)
                                                                        at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:109)
                                                                        at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1021)
                                                                        at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1080)
                                                                        at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47)
                                                                        at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:171)
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675)
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                                                                        at us.kostenko.glagol.catalog.view.DetailBookFragment.onCreateView(DetailBookFragment.kt:56) 
                                                                        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184) 
                                                                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298) 
                                                                        at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323) 
                                                                        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136) 
                                                                        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) 
                                                                        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998) 
                                                                        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709) 
                                                                        at android.os.Handler.handleCallback(Handler.java:725) 
                                                                        at android.os.Handler.dispatchMessage(Handler.java:92) 
                                                                        at android.os.Looper.loop(Looper.java:153) 
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5297) 
                                                                        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:833) 
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
                                                                        at dalvik.system.NativeStart.main(Native Method) 
                                                                     Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag ripple
                                                                        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:881)
                                                                        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:822)
                                                                        at android.content.res.Resources.loadDrawable(Resources.java:1990)
                                                                        at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
                                                                        at android.view.View.<init>(View.java:3335) 
                                                                        at android.widget.TextView.<init>(TextView.java:464) 
                                                                        at android.widget.Button.<init>(Button.java:107) 
                                                                        at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:66) 
                                                                        at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:62) 
                                                                        at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:109) 
                                                                        at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1021) 
                                                                        at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1080) 
                                                                        at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47) 
                                                                        at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:171) 
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675) 
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                                                                        at us.kostenko.glagol.catalog.view.DetailBookFragment.onCreateView(DetailBookFragment.kt:56) 
                                                                        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184) 
                                                                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298) 
                                                                        at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323) 
                                                                        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136) 
                                                                        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) 
                                                                        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998) 
                                                                        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709) 
                                                                        at android.os.Handler.handleCallback(Handler.java:725) 
                                                                        at android.os.Handler.dispatchMessage(Handler.java:92) 
                                                                        at android.os.Looper.loop(Looper.java:153) 
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5297) 
                                                                        at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                        at java.lang.reflect.Method.invoke(Method

App在运行android 5.1.1的设备上正常运行。任何关于什么可能出错的想法都受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

drawable-v21目录下创建一个目录res,并在drawable-v21下添加带有ripple的drawable 对于21以下的Api版本,使用相同的名称创建一个drawable并将其添加到drawable目录下,如下所示

<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="false">
  <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
   <corners android:radius="2.0dp"/>
   <solid android:color="@color/colorPrimary"/>
  </shape>
</item>
<item android:state_pressed="true">
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
  <corners android:radius="2.0dp"/>
  <solid android:color="@color/colorPrimaryDark"/>
</shape>
</item>

但是上面没有连锁反应