2013-05-23 2 views
0

내 앱에 맞춤 글꼴을 추가하는 동안 시간이 많이 걸립니다. 하지만 대부분의 경우 원활하게 실행됩니다.내 앱에 맞춤 글꼴을 추가하는 경우

다음 코드를 사용하고 있습니다.

try { 
// Get the typeface 
ShravyaApp.appTypeFace = Typeface.createFromAsset(getApplication().getAssets(), 
          "kadage.ttf"); 
Log.d("font","in type="+ShravyaApp.fontName); 
Log.d("font","type face="+ShravyaApp.appTypeFace); 
        } 
catch (Exception e) 
{ 
ShravyaApp.appTypeFace = Typeface.createFromAsset(getApplication().getAssets(), 
"kadage.ttf"); 
Log.d("font","in catch typr="+ShravyaApp.fontName); 
Log.d("font","type face="+ShravyaApp.appTypeFace); 
//Log.e(TAG, "Could not get typeface '" + + "' because " + e.getMessage()); 
e.printStackTrace();   
} 

내가지고있어 오류 :

NullPointerException at android.graphics.Typeface.nativeCreateFromAsset(Native Method) at android.graphics.Typeface.createFromAsset(Typeface.java:280)

+0

글꼴 파일을 저장할 폴더는 무엇입니까? –

답변

0

이것은 nativeCreateFromAsset의 IO 예외가 될 수 있습니다. 또한이 방법은 Activity onCreate() 전에이 메서드를 호출하기 때문에 발생할 수 있습니다.

어떤 방법 으로든 재 시도간에 100 밀리 초의 재시도 메커니즘을 사용하면 사용자 장치에 버그가없는 한 작동하지 않을 이유가 없습니다.

+0

글쎄, 내가 이것을 에서 호출했다. protected void onPostResume() – Uday

0

trycatch에 같은 코드를 사용해야하는 이유는 무엇입니까?

난 당신이 Typface -cache (example here)를 사용하여 응용 프로그램은 정말 글꼴을 필요로하는 경우, 당신은 재귀 하나에 당신의 방법을 리팩토링 할 수 있으며, Babibu 말했듯이, 중간에 일시 정지 좋습니다.

0

getApplication()은 null 포인터를 반환하는 함수라고 생각합니다. 생성자가 아니라 onCreate()에서 호출해야합니다. 확신하기 위해 더 많은 상황이 필요합니다.

또한 디버그 모드에서 널 포인터 예외를 포착하는 중단 점을 설정할 수 있습니다.

+0

잘'protected void onPostResume()'에서 이것을 호출하고있다. – Uday

관련 문제