此问题在此处已有答案:
How to return a DocumentSnapShot as a result of a method?(2个答案)
2小时前关门。
我有一个firestore数据库,我试图从那里获取数据。我的目的是在我的getDiaryInformation类中从那里获取数据,并将所有数据放入一个数组列表。在放入所有数据后,我想将其发送到我的Activity类。但当我尝试将数组列表从我的getDiaryInformation返回到我的Activity类时,它返回空,即使其中有数据。简单地说,我把我的值添加到数组列表中,但是当我试图返回它的时候,却不能发送到我的Activity类中。我该怎么做才能把我的值返回到Activity类中呢?
这是我的getDiaryInformation类。我把我的标题值放到我的数组列表中。我正试图把这个数组列表发送到我的Activity类。
`
public class GetDiaryInformation {
ArrayList<String> titleInformation=new ArrayList<>();
public ArrayList<String> getTitle(){
FirebaseFirestore db=FirebaseFirestore.getInstance();
db.collection("diary").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()){
for (QueryDocumentSnapshot document:task.getResult()) {
titleInformation.add(document.get("title").toString());
}
}
else{
Log.d("EXCEPTION",task.getException().getMessage());
}
}
});
return titleInformation;
}
}`
下面是我试图从getDiaryInformation类中获取值。在获取值后,我想打印它们,但我的数组列表返回空。
`public class ReadDiary extends AppCompatActivity {
GetDiaryInformation Data;
ArrayList<String> titleInformation=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read_diary);
getSupportActionBar().setTitle("Read Your Diaries");
Data=new GetDiaryInformation();
titleInformation=Data.getTitle();
Log.d("NEPTUN", String.valueOf(titleInformation.size()));
for (int i = 0; i < Data.titleInformation.size(); i++) {
Log.d("MARS",titleInformation.get(i));
}
}
}`
我看了https://stackoverflow.com/questions/55319499/synchronized-java-oncomplete-method,但不知道该怎么做。我也试着在那个链接中添加接口,但我在Activity类中调用了我的方法,所以这对我来说是另一个问题。我该怎么做才能防止这种情况,并将所有值放入数组列表?
1条答案
按热度按时间rjee0c151#
尝试使用@Autowire注解进行依赖注入。
代替:
试试看:
或者您可以尝试:
https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring