Java 尝试从firestore db输出到textview,但获取nullpointexception

Java 尝试从firestore db输出到textview,但获取nullpointexception,java,android,nullpointerexception,google-cloud-firestore,data-retrieval,Java,Android,Nullpointerexception,Google Cloud Firestore,Data Retrieval,由于异步进程,从firestore db向textview显示时出现问题 我试图通知TextView,但它们显然不受任何线程的约束 显示的数据可以记录到控制台,但不会显示到文本视图 我本来会使用notifyDataSetChanged(),但它的存在只是为了让recyclerview更新其内容 如果使用notifyall()或notify(),则会出现线程错误,显示元素已绑定到线程 package com.example.schedule; 导入android.content.Intent; 导

由于异步进程,从firestore db向textview显示时出现问题

我试图通知TextView,但它们显然不受任何线程的约束

显示的数据可以记录到控制台,但不会显示到文本视图

我本来会使用notifyDataSetChanged(),但它的存在只是为了让recyclerview更新其内容

如果使用notifyall()或notify(),则会出现线程错误,显示元素已绑定到线程

package com.example.schedule;
导入android.content.Intent;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入androidx.annotation.NonNull;
导入androidx.appcompat.app.appcompat活动;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入com.google.firebase.firestore.FirebaseFirestore;
导入com.google.firebase.firestore.QueryDocumentSnapshot;
导入com.google.firebase.firestore.QuerySnapshot;
公共类ScheduleDetails扩展AppCompatActivity实现View.OnClickListener{
按钮背面按钮;
文本视图schedName;
TextView textDesc;
TextView textDte;
文本视图文本时间;
私人消防队;
@凌驾
受保护的void onStart(){
super.onStart();
mAuth=FirebaseAuth.getInstance();
最终FirebaseUser currentUser=mAuth.getCurrentUser();
final FirebaseFirestore db=FirebaseFirestore.getInstance();
schedName=findviewbyd(R.id.schedName);
schedName.setText(getIntent().getStringExtra(“文本”);
最终字符串sched=getIntent().getStringExtra(“文本”);
db.收款(“附表”)
.get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
if(document.get(“Owner”).toString()等于(currentUser.getUid()){
if(document.get(“Schedule”).toString()等于(sched)){
System.out.println(document.get(“计划描述”).toString();
System.out.println(document.get(“计划描述”).toString();
System.out.println(document.get(“计划描述”).toString();
System.out.println(document.get(“计划描述”).toString();
System.out.println(document.get(“计划描述”).toString();
System.out.println(document.get(“计划描述”).toString();
System.out.println(document.get(“计划描述”).toString();
System.out.println(document.get(“计划描述”).toString();
textDesc.setText(document.get(“计划描述”).toString());
//textDesc.notify();
//Log.d(“”,document.get(“计划描述”).toString();
//textDte.notify();
textDte.setText(document.get(“计划日期”).toString());
//textTime.notify();
textTime.setText(document.get(“Schedule Time”).toString());
}
}
}
}否则{
Log.w(“我的Contenet”,“获取日程安排时出错”,task.getException());
}
}
});
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u schedule\u details);
backbutton=findViewById(R.id.buttonback);
setOnClickListener(此);
}
@凌驾
公共void onClick(视图){
Intent Intent=新Intent(这个,Navigator.class);
星触觉(意向);
}
}

由于firestore以异步方式返回数据,预计textview将显示计划的详细信息。我最近所做的是: 将监视器声明为新对象

 private static Object monitor = new Object();
要求主线程在我希望的位置等待Firestore的数据返回

synchronized(monitor) {
                try {
                    monitor.wait();
                } catch(InterruptedException e) {

                }
            }
在firestore的查询onComplete中,因为我必须等待许多任务才能完成,所以我使用了

Tasks.whenAllSuccess(task).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
                                        @Override
                                        public void onSuccess(List<Object> list) {

                                                synchronized (monitor) {
                                                    monitor.notifyAll();
                                                }

                                        }

                                    });
Tasks.whenAllSuccess(task).addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公开作废(列表){
同步(监视器){
monitor.notifyAll();
}
}
});

有关android studio IDE本身的问题,请仅使用
android studio
标记。关于Android编程的一般问题,请使用<代码> Android 标签。查看并检查这一点,如果它帮助你,请考虑一下投票,看看这个,我专门针对这些类型的问题做出了这个答案。如果你同意的话,请考虑一下:也许我理解这个错误,但是监视器的方法似乎是在等待,但不是ReuMeHi@ AyLoalaLy.没有人,我试着用你提到的方法,但是我没有。