Актив шрифта Android Runtime Exception не найден

Вот мой код и снимок экрана. Я пытаюсь установить собственный шрифт шрифта, но возникает исключение во время выполнения. Актив шрифта не найден, пока файл шрифта находится в папке ресурсов. Я что-то упускаю ?

Typeface font = Typeface.createFromAsset(getAssets(), "font/terminal.ttf");
((TextView) findViewById(R.id.weatherHeadingTV)).setTypeface(font);

введите здесь описание изображенияскриншот проекта Android Studio


person Muzammil Husnain    schedule 24.11.2015    source источник
comment
У меня была аналогичная ошибка. Перезапуск Android Studio решил эту проблему. Не спрашивайте меня, почему ....   -  person Christine    schedule 28.04.2016
comment
В моем случае помогает даже простой перезапуск симулятора. Похоже на ошибку в Android Studio   -  person Ph0en1x    schedule 27.06.2016
comment
Перезапуск Android-студии (даже в администраторе) у меня не сработал, путь к моей папке правильный.   -  person Denny    schedule 07.10.2016


Ответы (13)


Используйте этот метод:

final Typeface typeface = ResourcesCompat.getFont(context, R.font.X);

ResourcesCompat — это совместимый способ получения ваших ресурсов.

person smarteist    schedule 01.05.2019
comment
Привет! Хотя этот фрагмент кода может быть решением, включение объяснения действительно помогает улучшить качество вашего поста. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. - person Wing; 01.05.2019
comment
Это сработало для меня, следует отметить как правильный ответ - person FabioR; 20.03.2020
comment
Лучший ответ. Просто, на месте - person zulkarnain shah; 13.04.2020
comment
это должен быть принятый ответ, он обратно совместим и позволяет избежать волшебных строк - person davy307; 25.11.2020

  1. Имя папки должно быть "шрифты", а не "шрифт"
  2. Обратите внимание, что ваша папка «шрифты» находится в папке «активы» (которая должна находиться в вашей «основной» папке, а не в папке «res»). Мне потребовалось слишком много времени, чтобы понять это...
person Tiferet Cohen    schedule 17.05.2018
comment
Это лучший ответ. Автор должен принять хотя бы один ответ, чтобы помочь другим. - person Félix Maroy; 25.07.2020

имя папки должно быть "шрифты", а не "шрифт"

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/" + font);
person Gowtham Raj    schedule 24.11.2015
comment
Примите ответ, если вопрос был решен... это поможет сообществу - person Gowtham Raj; 24.11.2015
comment
Я переименовал папку со шрифтами в шрифты, но ошибка остается. - person Muzammil Husnain; 24.11.2015

Папка ресурсов вашего шрифта названа неправильно. Вы должны назвать папку как fonts, а не как font. Также измените свой код:

Typeface font = Typeface.createFromAsset(getAssets(), "fonts/terminal.ttf");
person Midhun MP    schedule 24.11.2015
comment
Я переименовал папку со шрифтами в шрифты, но ошибка остается. - person Muzammil Husnain; 24.11.2015
comment
@MuzammilHusnain: мне кажется, что это ошибка леденца, проверьте этот ответ леденец">stackoverflow.com/questions/27269264/ - person Midhun MP; 24.11.2015
comment
Это был единственный ответ, который решил мою проблему. У меня были папки шрифтов и шрифтов избыточно. - person Armai; 18.09.2020

Если вы используете Instant Run с подключаемым модулем Android Gradle версии 2.2.0-alphaX, это известная ошибка.

Обходной путь — отключить мгновенный запуск до тех пор, пока проблема не будет решена.

Вы можете отслеживать его здесь: https://code.google.com/p/android/issues/detail?id=212849&can=1&q=subcomponent%3DTools-Studio%20-has%3Aproject%20attachments%3D0&colspec.=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&start=7700

person Laurențiu Onac    schedule 24.06.2016

Распространенная ошибка, когда у вас есть активы в вашем проекте и вы используете альфа-версии AS. Похоже, это ошибка в системе сборки Android Studio. Простой обходной путь — очистить проект перед его запуском, и это должно решить проблему, с которой вы столкнулись.

person Jishin Dev    schedule 28.06.2016
comment
Очистка проекта устранила проблему! :) - person Sudheesh Mohan; 04.05.2017

У меня была такая же проблема, и мне удалось ее исправить. Первоначально я думал, что файлы шрифтов повреждены, но это не так. Затем я подумал, что Android Studio не любит файлы .ttf, потому что они единственные не работают. Оказывается, со шрифтами все в порядке.

ИСПРАВЛЕНИЕ: Просто нажмите Build > Clean project. Сразу исправил мне.

person Will    schedule 02.10.2017

Гарнитура шрифта = Typeface.createFromAsset(this.getAssets(),"font/terminal.ttf");

((TextView) findViewById(R.id.weatherHeadingTV)).setTypeface(гарнитура);

person jagan reddy    schedule 24.11.2015

Я попробовал другой файл шрифта, который работал нормально. Итак, я пришел к выводу, что предыдущий файл шрифта был поврежден. Спасибо @Miduhun MP , @Gowtham Raj и @jagan reddy

person Muzammil Husnain    schedule 24.11.2015

Если вы используете AndroidAnnotations, в приложении build.gradle проверьте, в порядке ли папка с ресурсами: например: main/src/assets.

Если вы измените шрифт, удалите приложение с устройства/эмулятора и запустите снова.

Код:

public static void setFontFace(Context context, TextView textView) {
  Typeface type = Typeface.createFromAsset(context.getAssets(), "myfont.ttf");
  textView.setTypeface(type);
}
person Pierry    schedule 24.07.2016
comment
Я использую приведенный выше код, но возникает та же ошибка, что и ресурс шрифта не найден. Файл существует в активах и активах/шрифтах. - person Sathish Gadde; 09.03.2017

У меня была проблема, что шрифты .woff не принимаются на Android 7+. Поэтому я переключился на шрифты .ttf.

person bremen_matt    schedule 18.05.2017

Для меня был поврежден сам файл шрифта. Я попробовал другой, чтобы заставить его работать.

person Bilal Halayqa    schedule 15.11.2017

Я просмотрел все ответы, но ни один из них не работал у меня. Я нашел новое решение после прочтения документации. Вот шаги, которые необходимо выполнить:

  1. Перейти в меню файлов
  2. В новом перейдите в папку и создайте папку активов.
  3. Вставьте файл шрифта в эту папку с ресурсами
  4. Используйте в своем коде атрибут Typeface.

    Тип шрифта = Typeface.createFromAsset(getAssets(), "myfont.ttf"); textView.setTypeface (тип);

Теперь все готово для использования шрифтов, которые вам нравятся.

person Shivam Marmat    schedule 14.01.2018
comment
дает исключение нулевого указателя. я застрял с этим около недели - person Mohammad Maaz; 16.11.2019