Android - Esperar lectura Firebase

 
Vista:

Esperar lectura Firebase

Publicado por anonimo (1 intervención) el 09/03/2020 19:54:19
Hola, estoy haciendo una aplicación de Android donde en un momento recupero datos de Firebase.
El problema es que cuando llamo a la función que lee los datos de Firebase, y me devuelve un String con un dato que necesito, la lectura acaba más tarde y el String siempre sale null, a pesar de que un tiempo después es capaz de leer el dato. ¿ Qué debo hacer para que espere a que acabe la lectura de Firebase?

Mi codigo es el siguiente:

1. En la primera función llamo a la siguiente
1
2
3
4
5
6
String rol="";
try {
    rol=recuperaRol(correo);
} catch (InterruptedException e) {
    e.printStackTrace();
}

2. En la funcion recuperaRol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public String recuperaRol(final String correo) throws InterruptedException {
    final String TAG = "MainActivity";
    final String[] rol = {""};
 
    db.collection("tabla_usuarios").get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        Log.d(TAG, document.getId() + " => " + document.getData());
 
                        if (document.getData().get("CORREO").equals(correo)){
                            rol[0] = (String) document.getData().get("ROL");
                            System.out.println("ROL encontrado" + rol[0]);
                        }
                    }
                } else {
                    Log.w(TAG, "Error getting documents.", task.getException());
                }
            }
        });
 
    return rol[0];
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder