gpt4 book ai didi

java - 尝试从 Firebase 检索值,但得到 null?

转载 作者:行者123 更新时间:2023-12-01 08:52:13 25 4
gpt4 key购买 nike

正如您从下面的代码中看到的,我从 onDataChange() 内部输出 retrievedValue ,它按预期工作。但我无法从其他地方输出 retrievedValue,因为它返回 null

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();

ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

retrievedValue = (Long) dataSnapshot.getValue();

System.out.println(retrievedValue); //this line works
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

System.out.println(retrievedValue); //this line returns null! How can I fix this?

最佳答案

this line returns null! How can I fix this?

我认为您不了解异步代码是如何工作的...首先,没有任何内容返回 null。尚未分配任何内容。

您的代码与此完全相同。

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
System.out.println(retrievedValue); //this line returns null!

ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

retrievedValue = (Long) dataSnapshot.getValue();

System.out.println(retrievedValue); //this line works
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

没有什么需要修复的,因为您错误地使用了 Firebase。

如果您需要retrievedValue,那么您应该将所有相关代码放入(或之后,例如通过其他方法)onDataChange

例如

private Long retreivedValue; // starts as null

public static void updateSomething(Long data) {
System.out.println(data); // this line works
}

public static void main(String... args) {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();

ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

retrievedValue = (Long) dataSnapshot.getValue();

updateSomething(retrievedValue);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

关于java - 尝试从 Firebase 检索值,但得到 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42316422/

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