2011-01-05 9 views
6

Ich bekomme manchmal Berichte über diesen Fehler oben in meinen Anwendungen angezeigt. Ich sehe diesen Fehler nie während der Entwicklung und des Tests. Die Anwendungen sind für 2.1 und höher. Ich teste in 2.1, 2.2 und 2.3 (Emulator) und reale Geräte (außer 2.3).Manchmal: <nine-patch> erfordert ein gültiges src-Attribut

Hier ist der Teil einer Layout-Datei ist, die diesen Fehler erzeugt (die Ansicht Teil eines Tablelayout ist):

<TextView 
style="@style/ActivityTitleBar" 
android_layout_span="2" 
android:layout_weight="2" 
android:text="@string/txt_appname" /> 

Hier ist der Stil-Definition:

<style name="ActivityTitleBar"> 
<item name="android:background">@drawable/titlebar</item> 
<item name="android:gravity">center</item> 
<item name="android:layout_height">wrap_content</item> 
<item name="android:layout_width">fill_parent</item> 
<item name="android:singleLine">true</item> 
<item name="android:textColor">#fff</item> 
<item name="android:textSize">14sp</item> 
<item name="android:textStyle">bold</item> 
</style> 

In res/ziehbar ist ein XML-Datei mit folgendem Inhalt:

<nine-patch 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:dither="true" 
android:src="@drawable/titlebar" /> 

Die titlebar.png in meinem ziehbar-hdpi befindet, ziehbar-ld Pi- und Drawable-MDPI-Ordner.

Ich habe keine Ahnung, welches Gerät oder Android-Release diesen Fehler verursacht.

Irgendwelche Ideen?

Vielen Dank im Voraus.

HJW

Hier ist der Stack-Trace-Bericht:

java.lang.RuntimeException: Unable to start activity ComponentInfo{de.x.y.android/de.x.y.android.Main}: android.view.InflateException: Binary XML file line #18: Error inflating class android.widget.TextView 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2781) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2797) 
at android.app.ActivityThread.access$2300(ActivityThread.java:135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:143) 
at android.app.ActivityThread.main(ActivityThread.java:4914) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class android.widget.TextView 
at android.view.LayoutInflater.createView(LayoutInflater.java:513) 
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:618) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:621) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:621) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:407) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
at android.app.Activity.setContentView(Activity.java:1654) 
at de.x.y.android.MyActivity.onCreate(MyActivity.java:46) 
at de.X.Y.android.Main.onCreate(Main.java:190) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1065) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745) 
... 11 more 
Caused by: java.lang.reflect.InvocationTargetException 
at android.widget.TextView.<init>(TextView.java:332) 
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
at android.view.LayoutInflater.createView(LayoutInflater.java:500) 
... 25 more 
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/titlebar.xml from drawable resource ID #0x7f020003 
at android.content.res.Resources.loadDrawable(Resources.java:1697) 
at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
at android.view.View.<init>(View.java:1885) 
at android.widget.TextView.<init>(TextView.java:338) 
... 29 more 
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #3: <nine-patch> requires a valid src attribute 
at android.graphics.drawable.NinePatchDrawable.inflate(NinePatchDrawable.java:262) 
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788) 
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729) 
at android.content.res.Resources.loadDrawable(Resources.java:1694) 
... 32 more 
+0

Endlich welche Lösung haben Sie gemacht? – Kalpesh

+0

[Related post hier] (http://stackoverflow.com/questions/37700777/android-api-21-9patch-error) und möglich [Google Fehlerbericht auf Gradle] (https://code.google.com/p/android/issues/detail? id = 210467) –

Antwort

2

Sie können nicht zuverlässig sowohl titlebar.xml und titlebar.png haben. Bitte benennen Sie sie um, um einen anderen Basisnamen zu erhalten.

+0

Danke - wird das ändern. Es funktionierte jedoch für mich und meine Kunden auf vielen verschiedenen Geräten und Emulatoren. Was kann der Grund für zwei Fehler in all diesen Monaten sein? –

+0

@hjw: Pure Glück, AFAIK. – CommonsWare

+0

Nach dem Umbenennen des PNG zu einem anderen Namen und Ändern seines Eintrags in der XML-Datei bekomme ich jetzt auch den Fehler. Jetzt bin ich total verloren. Wenige Kunden erhalten diesen Fehler, wenn beide Namen identisch sind und alle Kunden diesen Fehler erhalten, wenn die Namen unterschiedlich sind. Arg! –

-1

Ich hatte das gleiche Problem. Ich löste das Hinzufügen von schwarzen Teilen zu den oberen und linken 1 Pixelzeilen. Ich habe versucht, sie transparent zu halten, um die Bildskalierung zu vermeiden, hat aber nicht funktioniert.

Verwandte Themen