gpt4 book ai didi

java - 从实时转换到 firestore 加载数据并在 TextView 中显示

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:14 25 4
gpt4 key购买 nike

我正在将数据库从实时数据库迁移到 Firestore,但遇到了一些问题。目前,我正在尝试从数据库加载数据并将其显示在 TextView 中。这就是我正在处理的事情

    @Override
protected void onStart() {
super.onStart();

mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
String current_uid = mCurrentUser.getUid();

db.collection("Users").document(current_uid).addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
Log.d(TAG, "hello did this work");
String username = documentSnapshot.getString("name");
mName.setText(username);

}
});
}

当我运行调试器时用户名等于null,所以我相信它没有接收数据,我已经仔细检查了引用。我也相信这可能与获取 UID 有关,但我不确定并且似乎无法弄清楚为什么它不会收到下面的完整类数据

数据库:database

我在哪里:

好吧,所以我附加了一个 authstate 监听器以确保我获取 uid,但监听器内部的代码块没有运行,我不明白为什么。我尝试在 onStart 上使用 mAuth.addAuthStateListener(mAuthListner); 但这对我正在使用的代码不起作用

    @Override
protected void onStart() {
super.onStart();
//do i have to attach this listner?
//mAuth.addAuthStateListener(mAuthListner);

mAuth = FirebaseAuth.getInstance();

mAuthListner = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

String currentUser = mAuth.getCurrentUser().toString();

db.collection("Users").document(currentUser).addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
Log.d(TAG, "hello did this work");
String username = documentSnapshot.getString("name");
mName.setText(username);

}
});

}
};
}

最佳答案

事实证明,当我将新创建的用户添加到数据库时,我没有使用用户 ID 作为文档的名称,因此当我尝试引用它时,我没有更改它,以便在将用户添加到数据库时,它使用附加到随机字符串的 uid。

关于java - 从实时转换到 firestore 加载数据并在 TextView 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55148842/

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