2013-07-17 5 views
13

Что не так с этим xml, я пытаюсь получить ощущение нажатия кнопки. Я получаю исключение, я не могу понять. ResourceNotFound

В моей 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" /> 

Мой submitbuttonpress.xml в вытяжке папке

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

Вы не можете вставить строку цвета цвета в свой ''. Вам нужно создать фигурные чертежи для каждого состояния и указать их в селекторе, используя 'android: drawable'. Проверьте допустимые атрибуты для '' здесь: http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList –

+0

Спасибо, да, это было также на исключение, не знаю, почему я его пропустил , – taxeeta

ответ

25

После Попробуйте

В состоянии выбора требуется добавить drawable и в вашем случае вы хотите добавить цвет в состояние селектора. Таким образом, можно создать рисование с использованием цвета в ресурсе. Он будет работать как ColorDrawable

Пожалуйста, проверьте ниже код

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

значения/string.xml для цвета

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

Вы спасли мне много времени. Благодарю. – taxeeta

+0

Чтобы опоздать на вечеринку, я использовал растровое изображение в форме drawable, которое я заменил на свойство 'drawable' элемента. Это зафиксировало мою проблему, кстати, у меня был векторный drawable –

0

атрибуте android:background не существует. Правильный способ сделать это, чтобы создать новый файл ресурсов res/colors.xml со следующим содержанием:

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

Тогда просто изменить ваш selector к следующему:

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

Это автоматически создает ColorDrawable и правопреемников это как пригодный для этого состояния.

+1

На самом деле, это не работает, если вы дадите гексаговый цвет 'android: drawable'. Вместо этого вы должны создать атрибут 'color' в' style.xml' или 'strings.xml', а затем указать имя цвета для android: можно сделать так: ' android: drawable = "@ color/bg_color" ' – Mehdiway

+2

@Mehdiway благодаря! Я обновил свой ответ, чтобы отразить это. – Phil

+0

Я получаю атрибут цвета цвета lint 'должен быть определен' – feresr

Смежные вопросы