在我的应用中添加自定义字体

时间:2013-05-23 07:34:54

标签: android android-layout android-ui

在我的应用中添加自定义字体时,它会崩溃一段时间。 但大部分时间它都能顺利执行。

我正在使用以下代码。

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)

3 个答案:

答案 0 :(得分:0)

这可能是nativeCreateFromAsset中的IO异常。这也可能是因为你在Activity onCreate()之前调用了这个方法。

任何方式尝试使用重试机制,在重试之间休眠100毫秒,除非用户设备中存在一些错误,否则没有理由不起作用。

答案 1 :(得分:0)

为什么在trycatch中放置相同的代码?

我建议您使用Typface - 缓存(example here),如果您的应用确实需要该字体,您可能希望将您的方法重构为递归方法,而Babibu表示,暂停之间。

答案 2 :(得分:0)

我猜getApplication()是返回空指针的函数。它需要在onCreate()中调用,而不是在构造函数中调用。我们需要更多的背景来确定。

您还可以在调试模式下设置断点捕获空指针异常。