2017-09-29 4 views
3

Meine App stürzt auf Android 26, mein Verständnis ist, dass es von Schriftfamilie und Support-Bibliothek verursacht wird, aber ich kann nicht herausgefunden warum. Auf Geräten unter Android 8.0 funktioniert es gut.Schriftfamilie Ursache NPE auf 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 

Antwort

3

von nur Xmlns mit: App es Arbeit für Android v26 ist

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

Von Fonts in XML docs

Die Support Library 26.0support zum version 14 and higherFonts in XML Funktion auf Geräten mit Android-API zur Verfügung stellt.

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

Da die App API unterstützt wird 14, so haben Sie app Namespace statt android

0

verwenden Ich verwende Support-Bibliothek Version27.0.1 und ich hatte genau den gleichen Absturz auf Android Oreo, als ich herunterladbare Schriften https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts.html
verwendet 10 Anstatt herunterladbare Schriftarten zu verwenden, habe ich die Schriftarten einfach von der Website für Google-Schriftarten heruntergeladen und in das Verzeichnis res \ fonts gestellt. Die Schriftfamilie xml Datei blieb gleich. Ich habe es getestet und es funktioniert auf allen Android-Versionen. Es ist entweder ein Fehler oder ich habe die herunterladbaren Schriftarten nicht korrekt eingerichtet, obwohl ich den integrierten Assistenten zum Hinzufügen einer neuen Schriftart verwendet habe.