2014-08-31 1 views
0

Android 앱에 맞춤 서체를 사용하고 싶습니다. 나는 지시 사항을 따라 그림과 같이 내가 verdana.ttf을 넣어하는 안드로이드 스튜디오에서 assets 폴더 생성 : 나는 내 MainActivity 활동에 다음과 같은 호출Android Studio의 에셋에서 서체를로드 할 때 NullPointerException이 발생했습니다.

다음

assets

:

public class MainActivity extends ActionBarActivity { 

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

을 코드가 컴파일되지만 활동이 시작되면 위의 행에 NullPointerException이 표시됩니다. 나는 verdana.ttf 파일이 손상되었을 수도 있지만 다른 서체를 시도 할 때 오류가 지속되는 것으로 의심됩니다. 프로젝트 청소도 도움이되지 않습니다. 자산 폴더가 잘못된 위치에 있습니까? 나는 무엇을 잘못하고있을 것인가?

답변

3

이니셜 라이저에서 createFromAsset()으로 전화를 걸려고합니다. super.onCreate() 전화를 걸어서 onCreate()으로 이동하십시오. Activity에서 상속하는 메소드는 그 시점 이전에는 작동하지 않을 수 있습니다.

+0

감사합니다. 그러나 코드 작성 과정에서 정적 클래스에서'onCreateView' 메서드로'createFromAsset()'을 호출해야합니다. 그래서 여기에'super.onCreate()'호출 이후에'Typeface.createFromAsset (getActivity(). getAssets(), verdana.ttf ")'를 시도해 보았습니다. 그리고 여기에도 다시'NullPointerException'이 생깁니다. 이 문제에 대한 해결책이 있습니까 (아니면 새로운 질문으로 게시해야합니까?). – Sid

+0

@Sid : "코드 작성시 onCreateView 메서드의 static 클래스에서 createFromAsset()을 호출해야합니다."- onCreateView()는 유효한 'Context'를 얻기 위해 getActivity()를 호출 할 수 있습니다. . 'Context'를'Typeface'를 게으른 초기화하는 정적 메소드에 전달하십시오. "이에 대한 해결책이 있습니까? (또는 새로운 질문으로 게시해야합니까?") - 나머지 의견을 이해할 수 없으므로 여기에있는 조언이 충분하지 않으면 새로운 질문을해야 할 수도 있습니다 전체 스택 추적 및 소스 코드 포함. – CommonsWare

+0

효과가있었습니다. 고마워. – Sid

관련 문제