很抱歉,如果我在这里遗漏了一些明显的东西,但我对发生了什么感到困惑。我将Workout mWorkout;
声明为我班级顶部的实例变量。到目前为止,它尚未初始化。
此代码有效:createWorkout
返回Workout object
,它存储在局部变量test
中,然后设置实例变量mWorkout
。
public void startWorkout() {
Workout test = workoutFactory.createWorkout();
mWorkout = test;
}
这段代码没有:
public void startWorkout() {
mWorkout = workoutFactory.createWorkout();
}
mWorkout
仍为null
,即使createWorkout
仍在返回Workout
个对象。
为清晰起见,上面的代码略有简化。
答案 0 :(得分:0)
尝试使用mWorkout
符合条件this
。
this.mWorkout = workoutFactory.createWorkout();
我的假设是您定义了一个本地mWorkout
shadowing您的实例变量具有相同的名称。
答案 1 :(得分:0)
我敢打赌,在startWorkout
的非工作版本的某个地方,你已经声明了mWorkout
的方法范围实例,它掩盖了实例字段。如果您尝试this.mWorkout = ...
,可能会得到不同的结果。