Android после любых изменений активность / фрагмент базы данных Firebase закрывается - PullRequest
0 голосов
/ 07 марта 2019

Я разработал приложение для Android и использовал Firebase для аутентификации, базы данных и хранилища. В моем приложении есть навигация и 5 6 фрагментов. Например, есть фрагмент профиля, пользователи могут изменить личную информацию, но после сбоя происходит сбой фрагмента профиля кнопки, и приложение возвращается к HomePageActivity. Существует такая же проблема при загрузке изображений в деятельности. Пользователи загружают несколько раненных фотографий из действия, которое достигается из фрагмента. Однако после загрузки фотографии в хранилище и отправки информации в базу данных происходит сбой, и приложение возвращается к HomePageActivty. Я использовал как addValueEventListener, так и addListenerForSingleValueEvent, но проблема не решена. Не могли бы вы помочь мне? Вот пример:

 btnSave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            save();
            bringInfo();
            Toast.makeText(ProfilActivity.this,"Info changes is saved.",Toast.LENGTH_LONG).show();
        }
    });

 private void save() {

        myRef.child("kullanicilar").child(firebaseUser.getUid())
                .addListenerForSingleValueEvent(new ValueEventListener() {
                                                    @Override
                                                    public void onDataChange(DataSnapshot dataSnapshot) {
                                                        Map<String, Object> postValues = new HashMap<String,Object>();
                                                        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                                                            postValues.put(snapshot.getKey(),snapshot.getValue());
                                                        }
                                                        postValues.put("ad", (etNameH.getText().toString()).substring(0,1).toUpperCase()+(etNameH.getText().toString()).substring(1));
                                                        postValues.put("soyad", (etSurnameH.getText().toString()).substring(0,1).toUpperCase()+(etSurnameH.getText().toString()).substring(1));
                                                        postValues.put("hastane", etCalistigiKurumPr.getText().toString());
                                                        myRef.child("kullanicilar").child(firebaseUser.getUid()).updateChildren(postValues);
                                                    }

                                                    @Override
                                                    public void onCancelled(DatabaseError databaseError) {}
                                                }
                );
}
 private void bringInfo() {

    myRef.child("kullanicilar")
            .child(firebaseUser.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                user = dataSnapshot.getValue(Users.class);
                etNameH.setText(user.getAd());
                etSurnameH.setText(user.getSoyad());
                etCalistigiKurumPr.setText(user.getHastane());
            }
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });
}

1 Ответ

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

удалить вызов методаInIn (() из btnSave. Метод OnClickListner и помещенный под метод onDataChange попробуйте это

public void onClick(View v) {
    save();
    // bringInfo() remove from here
    Toast.makeText(ProfilActivity.this,"Info changes is
            saved.",Toast.LENGTH_LONG).show();
}

public void onDataChange(DataSnapshot dataSnapshot) {
//        *****Remaining Code*****
    bringInfo() put it here
}
...