2017-09-20 11 views
7

API26で導入された新しいAndroid Font supportを使用しています。サポートライブラリのバージョン26にバックポートされています。Android OreoフォントファミリNPEクラッシュ

私はそうのような2つのフォントの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を動作し、レンダリング:そうのように、私はその後、私の活動のレイアウトでのTextViewにそれを設定し

<?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> 

をMarshmallowを実行しているNexus 5の正しいフォントで(サポートライブラリを使用して)私は、次のスタックを有するピクセルオレオデバイス上でそれを実行しようとすると、しかし、それはクラッシュ:

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

私の問題が見つかりました。どうやら資産からフォントをres/fontsにコピーしたときに、regular_fontは正しくコピーされず、ファイルが破損していたようです。それを適切なファイルに置き換えた後で動作しました。

これは事前に26のデバイス(サポートLIBを使用して)に勤務し、(サポートlibが実行していない)のAndroidオレオの上に墜落した理由はまだ奇妙だ

+0

同じエラーが表示されます。文字通り古いファイルを削除して新しいファイルをコピーしましたか? –

1

私はあなたと同じ問題を抱えていました。だから私は、私は私のdemolayout.xml内で使用するために作られた

私lobster_font_family.xml(V26)の内部
<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> 

から変更しました。そして、問題なくAPI 26に取り組んでいます。

+0

この解決策を試してみます –

+0

この1つは私のために解決しました。 – YellowJ

関連する問題