2017-09-20 67 views
7

मैं एपीआई 26 में पेश किए गए नए एंड्रॉइड Font support का उपयोग कर रहा हूं और समर्थन लाइब्रेरी के संस्करण 26 में बैकपोर्ट किया गया है।एंड्रॉइड ओरेओ फ़ॉन्ट परिवार एनपीई क्रैश

मैं बहुत की तरह एक दो की font_family.xml फोंट बना लिया है:

<TextView 
     style="@style/TextAppearance.Display1" 
     android:layout_width="wrap_content" 
     android:fontFamily="@font/font_family" 
     android:textStyle="bold" 
     android:layout_height="wrap_content" /> 

यह काम करता है और TextView renders:

<?xml version="1.0" encoding="utf-8"?> 
<font-family 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <font 
     android:font="@font/regular_font" 
     android:fontStyle="normal" 
     android:fontWeight="400" 
     app:font="@font/regular_font" 
     app:fontStyle="normal" 
     app:fontWeight="400"/> 

    <font 
     android:font="@font/bold_font" 
     android:fontStyle="normal" 
     android:fontWeight="700" 
     app:font="@font/bold_font" 
     app:fontStyle="normal" 
     app:fontWeight="700"/> 

</font-family> 

मैं तो यह एक TextView पर मेरी गतिविधि लेआउट में इतना की तरह सेट किया नेक्सस 5 पर सही फ़ॉन्ट में मार्शमलो (समर्थन लाइब्रेरी का उपयोग करके) चल रहा है। लेकिन यह दुर्घटनाओं जब मैं निम्नलिखित ढेर के साथ एक पिक्सेल Oreo डिवाइस पर इसे चलाने का प्रयास:

Caused by: android.view.InflateException: Binary XML file line #44: Binary XML file line #44: Error inflating class TextView 
Caused by: android.view.InflateException: Binary XML file line #44: Error inflating class TextView 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference 
    at android.support.v4.graphics.TypefaceCompatApi26Impl.abortCreation(TypefaceCompatApi26Impl.java:202) 
    at android.support.v4.graphics.TypefaceCompatApi26Impl.createFromFontFamilyFilesResourceEntry(TypefaceCompatApi26Impl.java:220) 
    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) 

फ़ॉन्ट बढ़ा-चढ़ाकर साथ कुछ त्रुटि की तरह लग रहा है, लेकिन है कि अधिक से अधिक अनुमान नहीं कर सकते।

+0

समर्थन पुस्तकालय का कौन सा संस्करण आप उपयोग कर रहे हैं? –

+0

समर्थन लाइब्रेरी 26.0.2 – Valentin

+1

क्या आप '26.1.0' के साथ प्रयास कर सकते हैं? हो सकता है कि यह 26.0.2 –

उत्तर

0

मुझे मेरी समस्या मिली। जाहिर है, जब मैंने संपत्तियों से फोंट को प्रतिलिपि/फोंट में कॉपी किया है तो regular_font सही ढंग से कॉपी नहीं किया गया था और फ़ाइल दूषित हो गई थी। उचित फ़ाइल के साथ इसे बदलने के बाद यह काम किया।

यह कारण है कि इस पूर्व 26 उपकरणों पर काम किया (समर्थन lib का प्रयोग करके) और एंड्रॉयड Oreo पर दुर्घटनाग्रस्त हो गया (समर्थन lib नहीं चल)

+0

एक ही त्रुटि को देखते हुए। क्या आपने सचमुच पुरानी फाइल को हटा दिया और नया कॉपी किया? –

1

मैं तुम्हें रूप में एक ही समस्या थी अभी भी अजीब है। तो मैं अपने lobster_font_family.xml (v26) मैं अपने demolayout.xml अंदर उपयोग करने के लिए बनाया के अंदर

<font-family xmlns:android="http://schemas.android.com/apk/res/android"> 
     <font 
      app:fontStyle="normal" 
      app:fontWeight="400" 
      app:font="@font/lobster_regular" /> 
     <font 
      app:fontStyle="italic" 
      app:fontWeight="400" 
      app:font="@font/lobster_italic" /> 
    </font-family> 

को

<font-family xmlns:android="http://schemas.android.com/apk/res/android"> 
    <font 
     android:fontStyle="normal" 
     android:fontWeight="400" 
     android:font="@font/lobster_regular" /> 
    <font 
     android:fontStyle="italic" 
     android:fontWeight="400" 
     android:font="@font/lobster_italic" /> 
</font-family> 

से बदल दिया है। और यह बिना किसी समस्या के एपीआई 26 पर काम कर रहा है।

+0

इस समाधान को आजमाएं –

+0

यह मेरे लिए हल हो गया। – YellowJ

संबंधित मुद्दे