Дети в firebase удаляются после закрытия приложения, как оставить данные? - PullRequest
0 голосов
/ 05 марта 2019

Вот как я помещаю значение в базу данных:

 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);

Вот моя база данных, которая удаляется после повторного открытия приложения:

enter image description here

Динамические данные взяты из этого кода

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();

Это выглядит после удаления enter image description here

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Вместо того, чтобы использовать тот же родительский узел, который позже я обнаружил, это то, что вызывает уничтоженные данные. Поэтому я сделал новый родительский узел тем же процессом, но он содержит только те данные, которые мне нужны.

enter image description here

0 голосов
/ 05 марта 2019

Можете ли вы попробовать со статическими значениями, но также попробуйте

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

И посмотрите, поможет ли это.

Кроме того, как вы называете путь к базе данных Firebase - .getInstance().getReference() строка при открытии приложения? Мой следующий вопрос был бы о том, почему у вас есть неделимая карта ключей exDBKEY1 в вашей неделеExerciseModel, но имя ключа отображается в виде exercID в вашей базе данных, когда оно, вероятно, должно отображаться как exDBKEY1, так же, как ваша переменная exercName отображается в качестве exercName для имени ключа. Вам может понадобиться показать больше кода, например, где формируется упражнениеID, потому что оно похоже на firebaseUID, что означает, что он отправляется в базу данных, чтобы получить его, который может очищать ваши данные, откуда бы ни находился код для этого UID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...