У меня есть имя действия "CoachAlumnos", в котором оно отображает данные о программе восстановления данных о людях из базы данных firebase. Я использую FirebaseDatabase.getInstance () .getreference () .child ("Usuario"). AddValueEventListener {.. } Работает нормально.
У меня есть кнопка для этого действия, которая, когда я нажимаю на нее, переводит меня на другое имя действия "AgregarAlumnos", добавляет нового человека, работает нормально, но когда он заканчивается, я должен перейти к третьему действию, но пока он загружает данные к базе данных автоматически возвращаются к первому действию, я думаю, это потому, что прослушиватель событий первого действия. И я не знаю, как это остановить, я уже использую removeEventListener при первом действии, но это не работает.
Я использую это:
@Override
protected void onStart (){
super.onStart();
obtenerdatoscoach ();
obtenerdatosdeportistas();
}
private void obtenerdatosdeportistas() {
basedatos.getReference ().child ("Usuario-Alumno").addValueEventListener(listenerdeportisa = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot objeto : dataSnapshot.getChildren()) {
Usuario deportista = objeto.getValue(Usuario.class);
assert deportista != null;
if (deportista.obtenerCoach().equals (getIntent ().getStringExtra("email"))) {
alumnoslista.add(new AlumnoCard(
deportista.obtenerImageUrl(),
deportista.obtenerNombres() + " " + deportista.obtenerApellidos(),
deportista.obtenerTelefono(),
deportista.obtenerEmail(),
deportista.obtenerCoach(),
deportista.obtenerIdUsuario()));
adapter.notifyDataSetChanged();
}
}
if (alumnoslista.size() == 0) {
AlertDialog.Builder builder = new AlertDialog
.Builder(CoachAlumnos.this, R.style.DialogBasicCustomStyle);
builder.setIcon(R.drawable.icono_agregar_deportista);
builder.setTitle("AGREGUE");
builder.setMessage("NO CUENTA AUN CON DEPORTISTAS, AGREGUE A SU PRIMER DEPORTISTA")
.setPositiveButton("AGREGAR", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent nuevo = new Intent(CoachAlumnos.this, AgregarNuevo.class);
nuevo.putExtra("email", getIntent().getStringExtra("email"));
startActivity(nuevo);
}
}).setNegativeButton("AHORA NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
progressBar.setVisibility(View.GONE);
dialog.dismiss();
}
}).setCancelable(false)
.show();
}
progressBar.setVisibility(View.GONE);
//basedatos.getReference ().child ("Usuario-Coach").removeEventListener(listenerdeportisa); //I also try this
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void obtenerdatoscoach (){
basedatos.getReference ().child ("Usuario-Alumno").addValueEventListener(listenercoach = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot objeto : dataSnapshot.getChildren ()){
Usuario coach = objeto.getValue(Usuario.class);
assert coach != null;
if (coach.obtenerEmail().equals (getIntent ().getStringExtra("email"))){
coachid = coach.obtenerIdUsuario();
nombrecoach = coach.obtenerNombres() + " " + coach.obtenerApellidos();
foto_coach = coach.obtenerImageUrl();
Picasso.with (CoachAlumnos.this).load(foto_coach).into(perfilButton);
progressBar.setVisibility(View.GONE);
break;
}
}
//basedatos.getReference ().child ("Usuario-Alumno").removeEventListener(listenerdeportisa); //I also try this
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
protected void onDestroy (){
super.onDestroy();
if (listenerdeportisa != null)
basedatos.getReference ().child ("Usuario-Alumno").removeEventListener(listenerdeportisa);
if (listenercoach != null)
basedatos.getReference ().child ("Usuario-Coach").removeEventListener(listenercoach);
}