android - 关闭应用后firebase中的孩子被删除,如何让数据保留?
问题描述
以下是我在 firebase 中赋予价值的方式:
exDBKey1 = exerciseList.get(position).getExerciseId();
exerciseName = exerciseList.get(position).getExerciseName();
weekExerciseModel = new WeekExerciseModel(exerciseName, exDBKey1);
executedExercises.child(userID).child("WeeklyExercises").child(exerciseWeek)
.child(exerciseDay).push().setValue(weekExerciseModel);
这是我重新打开应用程序后被删除的firebase:
动态数据来自此代码
exerciseReference.addListenerForSingleValueEvent (new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
WeekExerciseModel weekExerciseModel = dataSnapshot1.getValue(WeekExerciseModel.class);
if("Very Active".equalsIgnoreCase(weekExerciseModel.getStatus()) &&
"1".equalsIgnoreCase(weekExerciseModel.getExerciseDay()) &&
"2".equalsIgnoreCase(weekExerciseModel.getExerciseWeek()) &&
"Gain".equalsIgnoreCase(weekExerciseModel.getUserGoal())
&& "None".equalsIgnoreCase(weekExerciseModel.getUserDisease())){
exerciseList.add(weekExerciseModel);
Log.e("exercisenameSnapshot", String.valueOf(dataSnapshot1.getKey()));
}
SharedPreferences sharedPreferences = getActivity().getSharedPreferences("FitureUser", Context.MODE_PRIVATE);
final SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("exerciseIDW2D1", weekExerciseModel.getExerciseId());
// editor.putInt("exerciseSum",day);
editor.putString("exerciseDay","Day 1");
editor.putString("exerciseWeek","Week 2");
editor.putString("exercisenameSnapshot", String.valueOf(dataSnapshot1.getKey()));
editor.apply();
解决方案
您可以尝试使用静态值,但也可以尝试
executedExercises.child(userID).child("WeeklyExercises").child(exerciseWeek).child(exerciseDay).setValue(weekExerciseModel);
看看这是否有帮助。
.getInstance().getReference()
另外,当您打开应用程序时,您如何调用您的 firebase 数据库路径 -行?我的下一个问题是为什么你的 weekExerciseModel 中有一个 exDBKEY1 的键映射,但是当它可能应该显示为 exDBKEY1 时,键名在你的数据库中显示为 exDBKEY1,就像你的 exerciseName 变量如何显示为键名的 exerciseName 一样。您可能需要显示更多的代码,例如executiveID 的形成位置,因为它看起来像一个firebaseUID,这意味着它将进入数据库以获取它,这可能会从该UID 的代码所在的任何其他地方清除您的数据。