Font resource could not be retrieved

独自空忆成欢 提交于 2020-06-22 11:17:25

问题


I'm using compileSdk and targetSdk version 27 and in last release I used new font resource feature for my project but after a day I got 3 crashes for this line of code

Typeface typeface = ResourcesCompat.getFont(this, R.font.my_font);

and the crash report says it's because of android.content.res.Resources$NotFoundException and Font resource could not be retrieved. All 3 crashes happened for users with android version 5.1.1. Is this a bug in support library or I'm doing something wrong?


回答1:


Had this same issue, noticed a detail in the docs that helped:

When you declare font families in XML layout through the support library, use the app namespace to ensure your fonts load.

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

I had been using the 'android' namespace before, changing to the 'app' namespace made my fonts load on older devices correctly.




回答2:


I got the same crash while using Downloadable fonts on API level 16 with Google Play services 9.2.56 (emulator).

If you're using this, then a device must have Google Play services version 11 or higher to use the Google Fonts provider (see this note in the docs).




回答3:


I had the same problem with a TTF file in R.font when using ResourcesCompat.getFont().

It turns out that Android didn't like this TTF file for some reason. There was no info in logcat, but debugging showed that TypefaceCompat.createFromResourcesFontFile() failed.

I replaced the TTF file with another, similar font and had no problems since.



来源:https://stackoverflow.com/questions/48825038/font-resource-could-not-be-retrieved

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!