NullPointerException при загрузке шрифта из ресурсов в Android Studio

Я хотел бы использовать собственный шрифт в своем приложении для Android. Я следовал инструкциям и создал папку assets в студии Android, в которую я поместил verdana.ttf, как показано на картинке:

активы

Затем я вызываю следующее в своей активности MainActivity:

public class MainActivity extends ActionBarActivity {

    Typeface mainFont = Typeface.createFromAsset(getAssets(), "verdana.ttf");

Код компилируется, но при запуске активности я получаю NullPointerException в строке выше. Я подозревал, что файл verdana.ttf может быть поврежден, но ошибка сохраняется при попытке использовать разные шрифты. Очистка проекта тоже не помогает. Папка активов находится в неправильном месте? Что я могу делать неправильно?


person Sid    schedule 31.08.2014    source источник


Ответы (1)


Вы пытаетесь вызвать createFromAsset() из инициализатора. Пожалуйста, переместите это на onCreate(), после звонка super.onCreate(). Методы, которые вы унаследовали в своем Activity, могут не работать до этого момента.

person CommonsWare    schedule 31.08.2014
comment
Спасибо, так работает! Но в моей конструкции кода мне нужно вызвать createFromAsset() в статическом классе в методе onCreateView. Итак, после вызова super.onCreate() я пробую Typeface.createFromAsset(getActivity().getAssets(), "verdana.ttf") и снова получаю NullPointerException. Есть ли решение для этого (или я должен опубликовать это как новый вопрос?). - person Sid; 31.08.2014
comment
@Sid: Но в моей конструкции кода мне нужно вызвать createFromAsset() в статическом классе в методе onCreateView - onCreateView() может вызвать getActivity(), чтобы получить действительный Context для использования. Передайте этот Context в статический метод, который лениво инициализирует ваш Typeface. Есть ли решение для этого (или я должен опубликовать это как новый вопрос?) - я не понимаю остальную часть вашего комментария, поэтому, если совет, который я здесь даю, недостаточен, вам может потребоваться задать новый вопрос, в том числе полная трассировка стека и исходный код. - person CommonsWare; 31.08.2014