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

Android应用向Training类的ArrayList<Exercise>添加对象时崩溃求助

问题根因

你遇到的崩溃为空指针异常(NullPointerException),核心原因是你仅在Training类中声明了ArrayList<Exercise>类型的exercises成员变量,但没有对该变量做初始化操作。此时你创建的randomTraining实例中,exercises属性默认值为null,调用null.add()方法就会直接触发崩溃。

修复方案

你可以任选以下任意一种方式修复:

  • 方案1:在Training类声明成员变量时直接完成初始化
public class Training {
    public Integer trainingNumber;
    public Date datum;
    public Integer nrOfExercises;
    // 声明时直接初始化列表,避免空指针
    public ArrayList<Exercise> exercises = new ArrayList<>();
}
  • 方案2:在createRandomTraining方法中,往列表添加元素前先初始化列表
    在randomTraining.datum = new Date(2021,m,d);这行代码之后,for循环开始之前,添加初始化代码即可:
randomTraining.datum = new Date(2021,m,d);
// 新增初始化列表的代码
randomTraining.exercises = new ArrayList<>();

for (int j = 0; j < amountOfExercises ; j ++){
    // 原有循环逻辑保持不变
}
可选优化建议
  • 不需要在循环中重复创建Random r = new Random()实例,全局复用方法开头创建的random实例即可,减少不必要的对象创建开销
  • 你用到的Date(int year, int month, int day)构造方法已被标记为过时,若有规范要求可替换为LocalDate相关API实现日期赋值

内容的提问来源于stack exchange,提问作者P3st1l3nc3101

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:45:08