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
2. En la funcion recuperaRol
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


0