Android - Firebase 从数据库中读取不起作用



我无法从我的Firebase DB读取(getUser方法(这段代码。我已经搜索了 2 个小时的答案,尝试了不同的教程,没有任何帮助。问题是看起来 onDataChange 方法从未真正被调用(使用 Log 测试(,我不知道我做错了什么。写入数据库(保存用户方法(正在正常工作。

法典:

public class UserDatabase {
private User user;
private DatabaseReference databaseReference;
public UserDatabase() {
    databaseReference = FirebaseDatabase.getInstance().getReference();
}
public void saveUser(User user) {
    databaseReference.child("users").child(user.getUid()).setValue(user);
}
public User getUser(String uid) {
    databaseReference = FirebaseDatabase.getInstance().getReference().child("users").child(uid);
    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            user = dataSnapshot.getValue(User.class);
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
    return user;
} }

感谢您的回答

正如我在您的评论中看到的那样,您说"最终获取数据",但我告诉您,您尝试使用返回类型为 User 类的 getUser() 方法的方式不是解决此问题的正确方法,尤其是在涉及异步方法时。您现在无法返回尚未加载的内容。 onDataChange()方法具有异步行为。快速解决您的问题的方法是仅在方法中使用从数据库中获取的那些user对象onDataChange()或者,如果您想在外部使用这些对象,请参阅本文中我回答的最后一部分,其中我解释了您可以使用回调来实现此目的的方式。

最新更新