Я редактирую вопрос для большей ясности
В моем Activity A
я запустил свой новый Activity B
для определенного условия. В действии А есть следующее:
final DatabaseReference reff = FirebaseDatabase.getInstance().getReference("Example").child(userid);
reff.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {`
navHeaderName.setText(Objects.requireNonNull(dataSnapshot.child("name").getValue()).toString());
navHeaderId.setText(Objects.requireNonNull(dataSnapshot.child("member_ID").getValue()).toString());
} else
reff.removeEventListener(this);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("RF-NavSet", databaseError.toString());
}
});
`
В fragment Af
также раздувается Activity A
FragmentManager fm = getSupportFragmentManager();
fragment = new FragmentOfActiityA();
fm.beginTransaction().replace(R.id.doc_fragment_container, fragment).commit();
Во Фрагменте А также I have Firebase ValueEventListener
listener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
TextView text1 = view.findViewById(R.id.some_text1);
TextView text2 = view.findViewById(R.id.some_text2);
TextView text3 = view.findViewById(R.id.some_text3);
text1.setText(Objects.requireNonNull(dataSnapshot.child(userId).child("name").getValue()).toString());
text2.setText(Objects.requireNonNull(dataSnapshot.child(userId).child("specialisation").getValue()).toString());
text3.setText(Objects.requireNonNull(dataSnapshot.child(userId).child("member_ID").getValue()).toString());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("RF - SetProfile", databaseError.getMessage());
}
};
reff.addListenerForSingleValueEvent(listener);
Здесь reff
и listener
объявлены глобально.
Когда я уничтожаю Activity A, я хочу удалить слушателя в Activity A
и Fragment Af
.
Как я могу это сделать?
Если я изменяю какое-либо значение базы данных на какое-то другое Activity X
, Activity A
автоматически запускается из-за этих ValueEventListener, которые мне не нужны.