В моей деятельности у меня есть настраиваемая панель инструментов. Я пытаюсь изменить шрифт названия.
Раньше я был в состоянии сделать это, поместив шрифт в папку с активами. С Android Studio 3 мы теперь можем использовать fontFamily и FontsContract. Я пробовал этот подход с помощью кода ниже:
mToolbar.setTitleTextAppearance(context,R.style.AppTheme_ActionBarText);
и стиль
<style name="AppTheme.ActionBarText" parent="@android:style/Widget.ActionBar.TabText">
<item name="fontFamily">@font/ultra</item>
</style>
Когда я запустил приложение, через несколько секунд (время, необходимое для загрузки пользовательского шрифта), приложение выходит из строя с журналом ниже:
java.lang.NullPointerException: попытка чтения из поля 'int android.support.v4.provider.FontsContractCompat $TypefaceResult.mResult" по ссылке на нулевой объект на android.support.v4.provider.FontsContractCompat $2.onReply(FontsContractCompat.java:277) на android.support.v4.provider.FontsContractCompat $2.onReply(FontsContractCompat.java:274) на android.support.v4.provider.FontsContractCompat $3.onReply(FontsContractCompat.java:312) на android.support.v4.provider.FontsContractCompat $3.onReply(FontsContractCompat.java:300) на android.support.v4.provider.SelfDestructiveThread $2 $1.run(SelfDestructiveThread.java:149) на android.os.Handler.handleCallback(Handler.java:739) на android.os.Handler.dispatchMessage(Handler.java:95) на android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7225) в java.lang.reflect.Method.invoke(собственный метод) at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:1230) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Является ли это ошибкой или есть правильный способ загрузить шрифт через xml? Я знаю, что другой способ - загрузить шрифт программно и использовать прослушиватель для установки шрифта в тексте.
** РЕДАКТИРОВАТЬ: во втором запуске приложения авария не происходит (поскольку шрифт уже загружен). В целях тестирования я меняю шрифт после каждого сбоя, чтобы отлаживать...