AsyncTask ile Firestoredan veri okuma
10.12.2019 - 10:16
Bir proje üzerinde çalışıyorum. Veritabanı sorgularını bu şekilde AsyncTask içinde yapmak istiyorum. Ancak onPostExecute'ta değerleri yazdırdığımda hashMap'ten null geliyor. Sorgunun içinde loga yazdırdığımda veriler olması gerektiği gibi geliyor. Yardımcı olur musunuz?
public class AsyncTask extends android.os.AsyncTask<Void,Void, HashMap> {
ProgressDialog progressDialog;
Context context;
Database database;
FirebaseAuth firebaseAuth;
FirebaseUser firebaseUser;
FirebaseFirestore firebaseFirestore;
HashMap<String,String> hashMap;
public AsyncTask(Context context) {
this.context = context;
database=new Firebase();
firebaseAuth= FirebaseAuth.getInstance();
firebaseUser=firebaseAuth.getCurrentUser();
firebaseFirestore= FirebaseFirestore.getInstance();
}
@Override
protected HashMap doInBackground(Void... voids) {
hashMap=new HashMap<>();
firebaseFirestore.collection("Users").document(firebaseUser.getUid())
.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if(task.isSuccessful()){
hashMap.put("mainUserUid",task.getResult().getString("mainUserUid"));
hashMap.put("authority",task.getResult().getString("authority"));
System.out.println(hashMap.get("authority")+"\n"+hashMap.get("mainUserUid"));
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
hashMap.put("mainUserUid","olmadı");
}
});
return hashMap;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog= ProgressDialog.show(context,"","Yükleniyor...",true);
}
@Override
protected void onPostExecute(HashMap hashMap) {
super.onPostExecute(hashMap);
progressDialog.dismiss();
}
}
13
Görüntülenme
0 Beğeni