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

点击主Activity按钮跳转TotalPaymentActivity时App自动关闭如何解决

问题根因

你代码中声明的AppDatabase类成员变量appDatabase仅做了声明,未进行初始化赋值,在AsyncTask的doInBackground方法中直接调用appDatabase.CustomerAccountDao()会触发空指针异常,直接导致Activity闪退。

解决方案

  • 先在使用appDatabase前完成初始化操作,你可以在initializeAll()方法中补充初始化代码(以Room单例初始化写法为例,替换为你自己项目中AppDatabase对应的初始化逻辑即可):
private void initializeAll() {
    tvPaidTotal = (TextView) findViewById(R.id.tvPaidTotal);
    // 补充数据库初始化
    appDatabase = AppDatabase.getInstance(getApplicationContext());
    new getTotalPayment().execute();
}
  • 补充异常捕获逻辑,你当前仅捕获了IndexOutOfBoundsException,空指针、数据库操作异常等都未捕获,建议扩大异常捕获范围,同时可以添加日志方便排查问题:
@Override
protected Void doInBackground(Void... voids) {
    sum = 0;
    try {
        arr = appDatabase.CustomerAccountDao().loadAllCustomerAccounts();
        for (int i=0;i<arr.size();i++) {
            sum+=arr.get(i).getCreditAmount();
        }
    } catch (Exception e) {
        // 开发阶段可以打印日志排查问题
        e.printStackTrace();
        sum = 0;
    }
    return null;
}
  • 如果修改后仍有闪退,可打开Android Studio的Logcat面板,筛选崩溃栈日志,即可定位具体报错点。

内容的提问来源于stack exchange,提问作者M Basir Hayat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:39:01