gpt4 book ai didi

android - 从 addValueEventListener Firebase 中检索字符串

转载 作者:行者123 更新时间:2023-11-29 15:40:05 24 4
gpt4 key购买 nike

我想从 addValueEventListener() 方法接收一个字符串,我用它来转售 Firebase 数据库中的数据。数据正确到达。

但是当确定要从该方法中获取字符串以在另一个方法中使用它时,它什么也不返回。

你有秘诀吗?

我已经尝试过 putExtras 并且还特意创建了一个方法,但它没有用。

final DatabaseReference mPostReference = FirebaseDatabase.getInstance().getReference().child("user-daily").child(getUid()).child("2017-Year");
mPostReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final ArrayList<String> labels = new ArrayList<String>();
for (DataSnapshot data : dataSnapshot.getChildren()){
final DailyItem dailyItem = data.getValue(DailyItem.class);
labels.add(dailyItem.mese);



}
title.setText(labels.get(position));

a = title.getText().toString();
}

@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(view.getContext(),"database error",
Toast.LENGTH_SHORT).show();
}
});

//this return null... why?
String title = a;

最佳答案

数据是从 Firebase 异步加载的。在您运行 title = a 时,尚未调用 onDataChange 方法。在调试器中设置一些断点来验证这一点,这是理解异步加载如何工作的关键。

解决方案是将您的问题从“首先获取对象,然后使用标题执行 blabla”重新定义为“开始获取对象;一旦对象可用,使用标题执行 blabla”。

在代码中这转化为:

final DatabaseReference mPostReference = FirebaseDatabase.getInstance().getReference().child("user-daily").child(getUid()).child("2017-Year");
mPostReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final ArrayList<String> labels = new ArrayList<String>();
for (DataSnapshot data : dataSnapshot.getChildren()){
final DailyItem dailyItem = data.getValue(DailyItem.class);
labels.add(dailyItem.mese);



}
title.setText(labels.get(position));

// Do blabla with the title
String title = title.getText().toString();
}

@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(view.getContext(),"database error",
Toast.LENGTH_SHORT).show();
}
});

许多刚接触 Firebase(和其他现代网络 API,因为它们都是这样工作的)的开发人员都在为这个问题而苦恼。所以我建议你也看看他们的问题和答案:

关于android - 从 addValueEventListener Firebase 中检索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42140707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com