You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android5/6设备启动崩溃:CallbackWithHandler.onTypefaceResult空指针异常

问题原因

该崩溃是androidx.core库低于1.3.0版本的已知兼容bug,仅出现在Android 5.0、Android 6.0系统上:本地res/font目录下的XML字体资源在低版本系统解析时,会触发字体请求回调里的空指针异常,堆栈指向CallbackWithHandler.onTypefaceResult的空对象调用。

修复方案

方案1(推荐):升级依赖

将androidx.core:core依赖版本升级到1.3.0及以上,该版本官方已经修复了onTypefaceResult方法的空值判断逻辑,直接更新依赖即可解决问题。

方案2:改用Assets加载字体

如果暂时无法升级依赖,可将字体文件从res/font目录移动到src/main/assets/font目录,放弃XML字体声明,改用代码直接加载字体,避开系统XML解析的兼容缺陷:

// 加载字体示例
Typeface robotoBold = Typeface.createFromAsset(getAssets(), "font/roboto_bold.ttf");
// 给控件设置字体
textView.setTypeface(robotoBold);

方案3:强制提前同步加载字体

如果需要保留res/font的XML声明方式,可在Application初始化阶段,提前同步加载所有用到的字体,禁用异步请求逻辑:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
    // 依次预加载所有用到的字体
    ResourcesCompat.getFont(context, R.font.roboto_bold);
    ResourcesCompat.getFont(context, R.font.roboto_medium);
    ResourcesCompat.getFont(context, R.font.roboto_regular);
}

内容的提问来源于stack exchange,提问作者Andriy D.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:15:03