在我的应用中添加自定义字体时,它会崩溃一段时间。 但大部分时间它都能顺利执行。
我正在使用以下代码。
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毫秒,除非用户设备中存在一些错误,否则没有理由不起作用。
答案 1 :(得分:0)
为什么在try
和catch
中放置相同的代码?
我建议您使用Typface
- 缓存(example here),如果您的应用确实需要该字体,您可能希望将您的方法重构为递归方法,而Babibu表示,暂停之间。
答案 2 :(得分:0)
我猜getApplication()是返回空指针的函数。它需要在onCreate()中调用,而不是在构造函数中调用。我们需要更多的背景来确定。
您还可以在调试模式下设置断点捕获空指针异常。