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)

4

3 回答 3

0

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

任何方式尝试使用重试机制,重试之间有 100 毫秒的睡眠,没有理由它不会工作,除非用户设备中的一些错误。

于 2013-05-23T08:24:09.130 回答
0

为什么在tryand中放置相同的代码catch

我建议您使用Typface-cache (此处为示例),如果您的应用程序确实需要该字体,您可能希望将您的方法重构为递归方法,正如Babibu所说,在两者之间暂停。

于 2013-05-23T08:35:58.913 回答
0

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

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

于 2013-05-23T08:36:53.867 回答