Soru & Cevap

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

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.