【发布时间】:2023-03-31 19:20:01
【问题描述】:
目前我正在尝试从我的 Firebase 数据中检索数据,然后我将使用这些数据在 onCreate() 方法中帮助创建我的导航抽屉。
在我使用的 Mike Penz 的 Material Drawer library 中,有一个选项可以指定 AccountHeader 的名称和电子邮件等帐户信息,因此我尝试在创建之前从 Firebase 数据库中的用户表中检索这些详细信息导航抽屉。
不幸的是,使用 addValueEventListener() 或 addListenerForSingleValueEvent() 不能满足我的需要,因为变量(userEmail、userRole、userName)仅在创建导航抽屉后才被赋值。
if(authData != null) {
firebase.child("users").child(authData.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot
Users user = snapshot.getValue(Users.class);
userEmail = authData.getProviderData().get("email").toString();
userRole = user.getRole();
if (user.getFirstName() != null && user.getLastName() != null) {
userName = user.getFirstName() + " " + user.getLastName();
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
我已经在这个 addValueEventListener 方法中和在这个方法之后记录了变量的值,所以我知道这些变量正在检索值,但只有在我的导航抽屉创建之后而不是之前。
希望我已经提供了足够的信息,以便有人能够帮助我解决这个问题,如果我没有让我知道你在 cmets 中需要什么。
【问题讨论】:
标签: android firebase firebase-realtime-database