shape fuktioniert auf Hardware nicht

  • 7 Antworten
  • Neuester Beitrag
Diskutiere shape fuktioniert auf Hardware nicht im Android App Entwicklung im Bereich Betriebssysteme & Apps.
znieh99

znieh99

Fortgeschrittenes Mitglied
Hallo Forum,
ich verwende ein shape in drawable welches mir runde Kanten bei LinearLayouts ermöglichen soll. Das hat auch schon funktioniert (auch auf meiner HW ein LG-H525n). Nun funktioniert es zwar im Emulator aber nicht auf der HW. (Fehlermeldung: "Leider wurde das Programm Akkuschoner beendet"). Entferne ich die Zeile "android:background="@drawable/round_corner" aus dem LinearLayout funktioniert es auch auf der HW.
lg Heinz

drawable/round_corner.xml(v24):
Code:
<?xml version="1.0" encoding="UTF-8"?>

<!-- Definiert abgerundete Ecken und die Hintergrundfarbe für ein Layout -->

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#393939"/>

    <stroke android:width="1dp"
        android:color="#555555"/>

    <padding android:left="1dp"
        android:top="1dp"
        android:right="1dp"
        android:bottom="1dp"/>

    <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp"
        android:topLeftRadius="7dp" android:topRightRadius="7dp"/>
</shape>

Der run-log sagt:
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app.heinz.akkuschoner, PID: 23879
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.heinz.akkuschoner/com.app.heinz.akkuschoner.MainActivity}: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class <unknown>
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:157)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5527)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class <unknown>
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at com.app.heinz.akkuschoner.MainActivity.onCreate(MainActivity.java:12)
 
markus.tullius

markus.tullius

Experte
Ich bin mir nicht sicher, aber der Fehler sieht so aus, als hätte dein Handy die falsche Android Version. Dein XML liegt im Ordner v24 (Android 7.0), dein Handy hat nur Android 5, wenn ich mich richtig erinnere.

Dh. dein Handy zieht keine XML aus dem Ordner v24 an, was zu ein InflateException führt.
 
znieh99

znieh99

Fortgeschrittenes Mitglied
Hallo Markus,
mein Handy hat Android 6.0. ist aber wohl auch zu gering. Ein Widerspruch ist, dass es ja schon funktioniert hat. Mir ist der Ordner v24 auch erst in den letzten Tagen aufgefallen.
Was kann ich tun?
lg heinz
-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
Ich habe gerade eine älteren Version der App wo drawable/round_corner.xml nicht im Ordner v24 steht probiert und diese funktioniert. ?
 
J

jogimuc

Stammgast
Eigentlich haben die Ordner mehr mit den Auflösungen zu tunen. Klar das bei den neueren API auch auf die größeren hochauflösenden Displays eingegangen wird.
Speichere deine drawaple im hauptordner und nicht im v24.

Glaube das verhält sich ähnlich wie mit den layout Ordnern.
 
znieh99

znieh99

Fortgeschrittenes Mitglied
@jogimuc
Bingo - das war's! Herzlichen Dank
 
markus.tullius

markus.tullius

Experte
Versuche mal das, was @jogimuc vorschlägt. Den Ordner gibt es, weil bestimmte Feature erst ab bestimmte Android vorhanden sind, bzw. geändert haben.

Mit der Auflösung hat der Ordner nicht zu tun. ;)

Resource types overview  |  Android Developers
 
J

jogimuc

Stammgast
Hat er ja schon und er hat auch berichtet das es geht.
Indirekt hat es doch mit der Auflösung zu tunen den android hat etwas an dem drawable Format verändert erweitert für neue API Versionen .
 
markus.tullius

markus.tullius

Experte
Soweit ich sehe steht da nicht: ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi, nodpi, tvdpi. Der Ordner drawable hat einfach nur mit der Grafik zu tun.

v24 heißt einfach ab API Level 24. Und wurde eingeführt, weil zum Beispiel die Style-Theme sich mit der Zeit geändert haben (z.B. Material Design)-

Und sonst hätte ich es oben nicht geschrieben, und es hat ja wohl auch funktioniert. ;)