2017-10-14 4 views
1

Je viens de tester mon application sur Oreo et je reçois ce qui semble être une exception fatale assez fondamentale que je ne reçois pas sur les versions antérieures d'Android.android.view.InflateException, mais seulement lors des tests sur Oreo

10-14 21:03:38.004 6833-6833/com.nooriginalthought.yabs E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.nooriginalthought.yabs, PID: 6833 
                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nooriginalthought.yabs/com.nooriginalthought.yabs.MainActivity}: android.view.InflateException: Binary XML file line #428: Binary XML file line #428: Error inflating class <unknown> 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
                       at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
                       at android.os.Handler.dispatchMessage(Handler.java:105) 
                       at android.os.Looper.loop(Looper.java:164) 
                       at android.app.ActivityThread.main(ActivityThread.java:6541) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
                      Caused by: android.view.InflateException: Binary XML file line #428: Binary XML file line #428: Error inflating class <unknown> 
                      Caused by: android.view.InflateException: Binary XML file line #428: Error inflating class <unknown> 
                      Caused by: java.lang.reflect.InvocationTargetException 
                       at java.lang.reflect.Constructor.newInstance0(Native Method) 
                       at java.lang.reflect.Constructor.newInstance(Constructor.java:334) 
                       at android.view.LayoutInflater.createView(LayoutInflater.java:647) 
                       at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
                       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720) 
                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788) 
                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 
                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 
                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) 
                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) 
                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) 
                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) 
                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) 
                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
                       at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
                       at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                       at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
                       at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:418) 
                       at android.app.Activity.setContentView(Activity.java:2654) 
                       at com.nooriginalthought.yabs.MainActivity.onCreate(MainActivity.java:155) 
                       at android.app.Activity.performCreate(Activity.java:6975) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
                       at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
                       at android.os.Handler.dispatchMessage(Handler.java:105) 
                       at android.os.Looper.loop(Looper.java:164) 
                       at android.app.ActivityThread.main(ActivityThread.java:6541) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

Après cela, je reçois un tas d'erreurs pour android.content.res.Resources$NotFoundException vecteur de ressources étirables - bien que ceux-ci fonctionnent parfaitement dans les versions antérieures d'Android.

Tout cela pendant les tests dans l'émulateur Android Studio car je n'ai pas accès à un périphérique Oreo.

Les erreurs semblent toutes être très vagues - la seule qui pointe vers une ligne de mon code pointe vers la ligne qui appelle la mise en page correcte setContentView(R.layout.main);.

Ligne 428 à main.xml (la ligne dans le fichier de configuration qui est gonflé et qui est visée à l'erreur) est la suivante:

    <Button 
         android:id="@+id/email_button" 
         android:layout_width="50dp" 
         android:layout_height="32dp" 
         android:background="@drawable/ic_yabs_email_144x92" 
         android:backgroundTint="#ffff" 
         android:paddingRight="8dp" 
         android:paddingTop="8dp" 
         android:textColor="#ffff" 
         android:textSize="12dp" /> 
+0

Veuillez inclure 'R.layout.main' et mettre en surbrillance la ligne 428 (mentionnée dans l'erreur) –

+0

La ligne 428 dans ce fichier de disposition est un bouton qui utilise l'un de mes vecteurs vectoriels comme arrière-plan. Les tirables existent définitivement dans le projet car ils sont affichés correctement lors de l'exécution ou du test sur toute autre version d'Android que j'ai essayé. J'ajouterai cette section du fichier layout.xml à la question. –

Répondre

1

Merci à @ David Medenjak indiquant que la La ligne mentionnée dans l'erreur était une ligne réelle dans mon fichier de mise en page. J'ai examiné le dessin vectoriel qui était utilisé dans cet article.

La suppression de cette ligne du code XML du drawable a corrigé l'erreur.

<path android:fillColor="#000000" android:pathData="" android:strokeWidth="0.48000002"/> 

je suppose un chemin sans pathData était en train de tuer les choses en quelque sorte.