【发布时间】:2021-08-16 05:36:13
【问题描述】:
我正在从文档中获取数据,然后将其显示在活动中,但显示它需要一些时间,所以我想在工作完成时放置一个对话框。 所以我添加了progressdialog(我知道它已被弃用,之后我将使用自定义对话框),但问题是对话框被调用并且即使在数据显示之前也被立即关闭。如果数据显示成功,我不知道如何收听,所以我可以在此之后放置dismiss方法。 这是代码:
package com.example.firestooredemo;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.Timestamp;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class StudentProfileData extends AppCompatActivity {
private FirebaseFirestore db = FirebaseFirestore.getInstance();
String S_ID,id;
TextView Student,MArks,Time;
// Timestamp t= new Timestamp("160536400","13000000000");
Map<String, Object> Stud;
String TAG = "Datacheck";
Sdm Stud_Data=new Sdm();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_student_profile_data);
ProgressDialog Pd=new ProgressDialog(this);
Pd.setCancelable(false);
Pd.setMessage("Loading Student Data ...");
Pd.show();
Student = findViewById(R.id.Stud_Name);
Time = findViewById(R.id.Timestamp1);
MArks = findViewById(R.id.MarksView);
Intent intent = getIntent();
S_ID = intent.getStringExtra("S_ID");
id=intent.getStringExtra("Path");
DocumentReference Stud_Doc= db.collection("EM_DEMO2").document("10th_STD").collection(S_ID).document(id);
Stud_Doc.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
Stud = documentSnapshot.getData();
Stud_Data.readData(Stud);
Log.d(TAG,id+documentSnapshot.getData().toString());
Student.setText(Stud_Data.getStudentname());
Time.setText(Stud_Data.getDateTime());
MArks.setText(Stud_Data.getMarks());
}
});
Log.d(TAG,"YAAAY");
if(Pd.isShowing()){
Pd.dismiss();
}
}
}
输出如下所示: https://imgur.com/a/XoffOYq
0.5 秒的延迟是问题所在。 请帮忙,提前谢谢
【问题讨论】:
标签: android google-cloud-firestore progressdialog