У меня есть проблема с прослушивателем событий Firebase, как их SOPT - PullRequest
0 голосов
/ 16 мая 2019

У меня есть имя действия "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);
}
...