簡體   English   中英

如何從 firebase 和 setText 檢索數據到 TextView?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM