[英]How to retrieve data from firebase and setText to a TextView?
我嘗試從 firebase 和 setText 檢索數據到 TextViews,但它不起作用。 我嘗試了不同的方法。 我沒有收到錯誤,字符串不為空,但文本不顯示。 我在另一個項目中使用了這些方法,它們奏效了。 我究竟做錯了什么?
這是代碼:
drawerLayout = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
View headerView = navigationView.getHeaderView(0);
navUsername = headerView.findViewById(R.id.navUsername);
navEmail = headerView.findViewById(R.id.navEmail);
ActionBarDrawerToggle toogle = new ActionBarDrawerToggle(this, drawerLayout, toolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toogle);
toogle.setDrawerIndicatorEnabled(true);
toogle.syncState();
if(savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ArtFragment()).commit();
navigationView.setCheckedItem(R.id.nav_art);
}
auth = FirebaseAuth.getInstance();
currentUser = auth.getCurrentUser();
String uid = currentUser.getUid();
refUsername = FirebaseDatabase.getInstance().getReference().child("users").child(uid);
refUsername.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
User user = dataSnapshot.getValue(User.class);
navUsername.setText(user.getUsername());
navEmail.setText(user.getEmail());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
Firebase json 示例:
users
uid
email: ""
password:""
username:""
這是 User.class:
public class User {
String username, email, password;
public User(String username, String email, String password){
this.username = username;
this.email = email;
this.password = password;
}
public User(){}
public void setUsername(){
this.username = username;
}
public String getUsername(){
return username;
}
public void setEmail(){
this.email = email;
}
public String getEmail(){
return email;
}
public void setPassword(){
this.password = password;
}
public String getPassword(){
return password;
}
}
我可以看到您正在嘗試為本地用戶獲取數據
currentUser = auth.getCurrentUser();
String uid = currentUser.getUid();
refUsername = FirebaseDatabase.getInstance().getReference().child("users").child(uid);
您是否從 Firebase 數據庫中檢查過該記錄是否存在? 您可以記錄uid
的值,然后從users
節點下的 Firebase 檢查
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.