我在我的sqlite数据库的共享首选项中跟踪行ID。我当时使用的是int型,但后来我意识到这样做可能会更合适,因为id值会随着时间的流逝而变得巨大。当我尝试从共享首选项获取getLong时,出现此错误:java.lang.ClassCastException:java.lang.Integer无法转换为java.lang.Long
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
editor = sharedPreferences.edit();
workoutId = sharedPreferences.getLong("workoutId", 0);
我的ExerciseId初始化代码是全局变量
private long workoutId;
我不确定错误消息中从哪里获取整数值。
也许int会很好吗?
最佳答案
问题出在您的默认值是整数。
你应该用
workoutId = sharedPreferences.getLong("workoutId", 0L);
要么
workoutId = sharedPreferences.getLong("workoutId", (long) 0);