2017-09-29 2 views
3

Mon appli se bloque sur Android 26, je crois comprendre que c'est causé par font-family et la bibliothèque de soutien, mais je ne peux pas comprendre pourquoi. Sur les appareils sous Android 8.0, cela fonctionne très bien.Famille de police cause NPE sur android 26

Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class Button 
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
at android.support.v4.graphics.TypefaceCompatApi26Impl.addFontFromAssetManager(TypefaceCompatApi26Impl.java:150) 
at android.support.v4.graphics.TypefaceCompatApi26Impl.createFromFontFamilyFilesResourceEntry(TypefaceCompatApi26Impl.java:218) 
at android.support.v4.graphics.TypefaceCompat.createFromResourcesFamilyXml(TypefaceCompat.java:116) 
at android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:249) 
at android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:213) 
at android.support.v4.content.res.ResourcesCompat.getFont(ResourcesCompat.java:206) 
at android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119) 
at android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208) 
at android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:152) 
at android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38) 
at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:77) 
at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:67) 
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:109) 
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024) 
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) 
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.inflate(LayoutInflater.java:515) 
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) 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Method.invoke(Native Method) 
at android.support.v4.graphics.TypefaceCompatApi26Impl.addFontFromAssetManager(TypefaceCompatApi26Impl.java:145) 
... 42 more 
Caused by: java.lang.NullPointerException 
at android.graphics.FontFamily.nAddFontFromAssetManager(Native Method) 
at android.graphics.FontFamily.addFontFromAssetManager(FontFamily.java:149) 
... 44 more 

Répondre

3

En utilisant seulement xmlns: l'application, il est un travail pour Android v26

<font 
    app:font="@font/cuprum_regular" 
    app:fontStyle="normal" 
    app:fontWeight="400"/> 
1

De Fonts in XML docs

Le Support Library 26.0 fournit support la Fonts in XML fonction sur les appareils fonctionnant sous API Android version 14 and higher.

When you declare font families in XML layout through the support library, use the app namespace.

Depuis votre application supporte l'API 14 de sorte que vous devez utiliser app espace de noms au lieu de android

0

J'utilise support version bibliothèque27.0.1 et je eu exactement le même accident sur Android Oreo lorsque j'utilisais les polices téléchargeables https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts.html
Au lieu d'utiliser des polices téléchargeables, je viens de télécharger les polices à partir du site Web des polices Google et les a placées dans le répertoire res \ fonts. La famille de polices xml est restée la même. Je l'ai testé et il fonctionne sur toutes les versions d'Android. C'est soit un bug ou je n'ai pas configuré les polices téléchargeables correctement même si j'ai utilisé l'assistant intégré pour ajouter une nouvelle police.