2013-07-17 5 views
13

Was ist falsch mit diesem xml, Ich versuche, eine Taste drücken Gefühl dafür zu bekommen. Ich bekomme eine Ausnahme, ich kann es nicht verstehen. ResourceNotFound

In meinem 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" /> 

Mein submitbuttonpress.xml im ziehbar Ordner

<?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 
+2

Sie können keine rohe Farbfolge in Ihre '' so bleiben. Sie müssen für jeden Status Zeichenformulare erstellen und diese in Ihrem Selektor mit 'android: drawable' referenzieren. Überprüfen Sie die gültigen Attribute für '' hier: http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList –

+0

Danke, ja, es war auch auf die Ausnahme, weiß nicht, warum ich es verpasst . – taxeeta

Antwort

25

Sobald Versuchen Sie, diese

In Wähler Zustand ist es erforderlich, ziehbar hinzufügen und in Ihrem Fall möchte, dass Sie Farbe hinzufügen in der Wahl state.So es möglich ist, drawable mit Farbe in Ressource zu erstellen. Es funktioniert wie ColorDrawable

Überprüfen Sie bitte unten 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> 

Werte/string.xml für Farbe

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

Sie haben mir viel Zeit gespart. Vielen Dank. – taxeeta

+0

an die Partei zu spät, ich wurde mit Bitmap in Form ziehbar, die ich mit Punkt 'drawable' Eigenschaft eines Elements ersetzt. Diese feste mein Problem, btw ich hatte Vektor ziehbar –

0

Das Attribut android:background existiert nicht. Der richtige Weg, dies zu tun ist, um zuerst eine neue Ressourcendatei res/colors.xml mit folgendem Inhalt:

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

nur auf die folgende Ihre selector Ändern Sie dann:

<?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> 

Diese erstellt automatisch eine ColorDrawable und Abtretungs es als der ziehbare für diesen Staat.

+1

Eigentlich ist dies nicht funktioniert, wenn Sie hex Farbe 'android geben: drawable'. Sie sollten stattdessen ein 'color' Attribut in' style.xml' oder 'strings.xml' erstellen und dann den Farbnamen an android: so wie möglich ziehn: ' android: drawable = "@ color/bg_color" ' – Mehdiway

+2

@Mehdiway Vielen Dank! Ich habe meine Antwort aktualisiert, um dies zu berücksichtigen. – Phil

+0

Ich bekomme einen Fusselfehler 'Farbattribut sollte definiert werden' – feresr

Verwandte Themen