简体   繁体   中英

Exception android.content.res.Resources$NotFoundException: File res/drawable/my.xml from drawable resource ID

Whats wrong with this xml, I am trying to get a button press feel. I am getting a exception, I am unable to understood. ResourceNotFound

In my layout.xml

<Button
    android:id="@+id/submit"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/submitbuttonpress"
    android:text="Submit"
    android:textColor="#eeeee4"
    android:typeface="monospace" />

My submitbuttonpress.xml in the drawable folder

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false" android:background="#AAAAAA" />
    <item android:state_pressed="true" android:background="#777777" />
</selector>

Exception (logcat)

07-17 19:07:25.072: E/AndroidRuntime(2225): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.taxeeta/com.itaxeeta.BookingExperience}: android.view.InflateException: Binary XML file line #326: Error inflating class android.widget.Button
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.os.Looper.loop(Looper.java:130)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.app.ActivityThread.main(ActivityThread.java:3687)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at java.lang.reflect.Method.invokeNative(Native Method)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at java.lang.reflect.Method.invoke(Method.java:507)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at dalvik.system.NativeStart.main(Native Method)
07-17 19:07:25.072: E/AndroidRuntime(2225): Caused by: android.view.InflateException: Binary XML file line #326: Error inflating class android.widget.Button
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.createView(LayoutInflater.java:518)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:216)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.app.Activity.setContentView(Activity.java:1660)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at com.itaxeeta.BookingExperience.onCreate(BookingExperience.java:100)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
07-17 19:07:25.072: E/AndroidRuntime(2225):     ... 11 more
07-17 19:07:25.072: E/AndroidRuntime(2225): Caused by: java.lang.reflect.InvocationTargetException
07-17 19:07:25.072: E/AndroidRuntime(2225):     at java.lang.reflect.Constructor.constructNative(Native Method)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.LayoutInflater.createView(LayoutInflater.java:505)
07-17 19:07:25.072: E/AndroidRuntime(2225):     ... 27 more
07-17 19:07:25.072: E/AndroidRuntime(2225): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/nextprevbuttonpress.xml from drawable resource ID #0x7f02003e
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.content.res.Resources.loadDrawable(Resources.java:1697)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.view.View.<init>(View.java:1951)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.widget.TextView.<init>(TextView.java:389)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.widget.Button.<init>(Button.java:108)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.widget.Button.<init>(Button.java:104)
07-17 19:07:25.072: E/AndroidRuntime(2225):     ... 30 more
07-17 19:07:25.072: E/AndroidRuntime(2225): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #3: <item> tag requires a 'drawable' attribute or child tag defining a drawable
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:167)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
07-17 19:07:25.072: E/AndroidRuntime(2225):     at android.content.res.Resources.loadDrawable(Resources.java:1694)
07-17 19:07:25.072: E/AndroidRuntime(2225):     ... 35 more

Once Try this

In selector state it is required to add drawable and in your case you wants to add color in selector state.So it is possible to create drawable using color in resource. It will work as ColorDrawable

Please check below code

<selector xmlns:android="http://schemas.android.com/apk/res/android">

        <item android:drawable="@drawable/clr_normal" android:state_pressed="false"/>
        <item android:drawable="@drawable/clr_pressed" android:state_pressed="true"/>

    </selector>

values/string.xml for color

 <drawable name="clr_normal">#AAAAAA</drawable>
<drawable name="clr_pressed">#777777</drawable>

The attribute android:background does not exist. The correct way to do this is to first create a new resource file res/colors.xml with the following contents:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="lt_gray">#AAAAAA</color>
    <color name="dk_gray">#777777</color>
</resources>

Then just change your selector to the following:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false" android:drawable="@color/lt_gray" />
    <item android:state_pressed="true" android:drawable="@color/dk_gray" />
</selector>

This automatically creates a ColorDrawable and assigns it as the drawable for that state.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM