【问题标题】:adding custom font in my app在我的应用中添加自定义字体
【发布时间】:2013-05-23 16:36:53
【问题描述】:

在我的应用程序中添加自定义字体时,它崩溃了一段时间。 但大多数时候它都能顺利执行。

我正在使用以下代码。

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)

【问题讨论】:

  • 字体文件放在哪个文件夹中?

标签: android android-layout android-ui


【解决方案1】:

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

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

【讨论】:

  • 好吧,我在protected void onPostResume()打电话给这个
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    你也可以在调试模式下设置断点捕捉空指针异常。

    【讨论】:

    • 好吧,我在protected void onPostResume()打电话给这个
    猜你喜欢
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2016-07-12
    • 2016-11-22
    • 1970-01-01
    • 2020-01-16
    • 2015-08-29
    相关资源
    最近更新 更多