gpt4 book ai didi

java - 适用于 Android 的 Firebase 数据库,检索数据时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:44 26 4
gpt4 key购买 nike

所以我在从数据库检索数据时遇到问题。我认为问题出在 return 语句上。

当我运行应用程序时,应显示 flatID 的调试文本为空白。我确信数据在数据库中,所以这不是问题。

我对 Java 和一般编程还很陌生,感谢您的帮助和耐心:) 代码如下。

flatID = readFlatID();
debug1.setText(flatID);

public String readFlatID(){

String uid = mAuth.getCurrentUser().getUid().toString();

mDatabase.child("Users").child(uid).child("Flat")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
flat = dataSnapshot.getValue().toString();
Toast.makeText(getApplicationContext(),"Data Read Successfully",Toast.LENGTH_SHORT).show();
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

return flat;


}

最佳答案

Firebase 方法是异步的。这就是为什么没有设置文本的原因。您可以设置一个监听器并将其传递给该方法,以便在获取数据时获得回调。这就是我在代码方面的意思:

//Create an interface
interface IDatabaseLoad {
void onDataLoadSuccess(String data);
void onDataLoadFailed();
}

//Initialize it
IDatabaseLoad databaseLoad = new IDatabaseLoad() {
@Override
public void onDataLoadSuccess(String data) {
debug1.setText(data);
Toast.makeText(getApplicationContext(),"Data Read Successfully",Toast.LENGTH_SHORT).show();
}

@Override
public void onDataLoadFailed() {

}
};

//modify your method
public void readFlatID(final IDatabaseLoad listener){

String uid = mAuth.getCurrentUser().getUid().toString();

mDatabase.child("Users").child(uid).child("Flat")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
listener.onDataLoadSuccess(dataSnapshot.getValue().toString());
}

@Override
public void onCancelled(DatabaseError databaseError) {
listener.onDataLoadFailed();
}
});
}

现在您只需调用 readFlatID(databaseLoad)TextView 将在获取数据后设置数据。

关于java - 适用于 Android 的 Firebase 数据库,检索数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50147471/

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