首页 > 解决方案 > 关闭应用后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();

删除后是这样的 在此处输入图像描述

标签: androidfirebasefirebase-realtime-database

解决方案


您可以尝试使用静态值,但也可以尝试

executedExercises.child(userID).child("WeeklyExercises").child(exerciseWeek).child(exerciseDay).setValue(weekExerciseModel);

看看这是否有帮助。

.getInstance().getReference()另外,当您打开应用程序时,您如何调用您的 firebase 数据库路径 -行?我的下一个问题是为什么你的 weekExerciseModel 中有一个 exDBKEY1 的键映射,但是当它可能应该显示为 exDBKEY1 时,键名在你的数据库中显示为 exDBKEY1,就像你的 exerciseName 变量如何显示为键名的 exerciseName 一样。您可能需要显示更多的代码,例如executiveID 的形成位置,因为它看起来像一个firebaseUID,这意味着它将进入数据库以获取它,这可能会从该UID 的代码所在的任何其他地方清除您的数据。


推荐阅读