在我的活动中,我有一个在 onCreate() 期间初始化的培训对象成员。该对象的所有成员均已设置。
private Training mTraining;是班级成员
public class Training extends BaseModel {
...
@SerializedName("state")
public TrainingState state;
....
public TrainingPreview() {
}
这个对象是从服务器(JSON)得到的,我在这个状态上有一个转换器来确保这个枚举不能为空(我使用 GSON 引擎):
public class TrainingStateConverter extends EnumConverter<TrainingState> {
public static final Type TYPE = new TypeToken<TrainingState>() {}.getType();
@Override
protected TrainingState deserialize(String value) {
return TrainingState.fromString(value);
}
@Override
protected TrainingState getUnknownValue() {
return TrainingState.UNKNOWN;
}
}
在设置过程中,我创建了带有监听器的练习列表以显示特定练习:
private void refreshExercisesList() {
final Runnable showTrainingParts = new Runnable() {
public void run() {
int nbItems = mCardExercises.setExercises(mTraining.training, mTraining.state,
new FlatCardTrainingProfilePartExercisesView.OnClickExerciseListener() {
@Override
public void showPart(String trainingPartId, int index) {
onClickOnExercisesList(trainingPartId, index);
}
});
}
};
}
...
}
我的 onClickOnExercisesList() 方法:
private void onClickOnExercisesList(String trainingPartId, int index) {
...
switch (mTraining.state) {
...
几个月以来,此活动代码运行良好,但昨天出现 NullPointerException switch (mTraining.state):
int com.xxx.model.training.TrainingState.ordinal()' on a null object reference
com.xxx.ui.training.TrainingActivity.onClickOnExercisesList
伙计们怎么可能?
非常感谢您的帮助!