Ресурс шрифта не может быть восстановлен
Я использую compileSdk
и targetSdk
версии 27, и в последнем выпуске я использовал новую функцию ресурса шрифта для моего проекта, но через день у меня появилось 3 сбоя для этой строки кода
Typeface typeface = ResourcesCompat.getFont(this, R.font.my_font);
и в отчете о android.content.res.Resources$NotFoundException
говорится об этом из-за android.content.res.Resources$NotFoundException
и ресурс шрифта не могут быть восстановлены. Все 3 аварии произошли для пользователей с версией Android 5.1.1
. Это ошибка в библиотеке поддержки, или я что-то делаю неправильно?
Ответы
Ответ 1
Если бы эта же проблема была замечена в документах, которые помогли:
Когда вы объявляете семейства шрифтов в макете XML через библиотеку поддержки, используйте пространство имен приложений, чтобы обеспечить загрузку шрифтов.
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
<font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/>
<font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" />
</font-family>
Раньше я использовал пространство имен "android", перейдя в пространство имен "приложение", чтобы мои шрифты загружались на более старые устройства правильно.
Ответ 2
Я получил тот же сбой при использовании загружаемых шрифтов на уровне API 16 с сервисами Google Play 9.2.56 (эмулятор).
Если вы используете это, то на устройстве должна быть установлена служба Google Play версии 11 или выше, чтобы использовать поставщика Google Fonts (см. Это примечание в документации).
Ответ 3
У меня была такая же проблема с файлом TTF в R.font при использовании ResourcesCompat.getFont()
.
Получается, что Android почему-то не понравился этот файл TTF. В logcat не было никакой информации, но отладка показала, что TypefaceCompat.createFromResourcesFontFile()
завершился ошибкой.
Я заменил файл TTF другим, похожим шрифтом и с тех пор проблем не было.
Ответ 4
android.content.res.Resources$NotFoundException
Эта ошибка появилась, потому что приложение не нашло ваш файл my_font в вашем предоставленном местоположении. Итак, поместите этот файл my_font в папку с ресурсами, а затем запустите его.