gpt4 book ai didi

java - 单击按钮后单个 ValueEventListener 未获取值

转载 作者:行者123 更新时间:2023-12-02 04:56:30 26 4
gpt4 key购买 nike

单击按钮后,我需要从 Firebase 实时数据库获取昵称值。所以我在按钮的 onClick 方法中创建了 singleValueListner() 。但这不起作用。

我尝试过调试它,但代码没有进入singleValueEventListener()

Button getName = (Button)findViewById(R.id.getName);

getName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("Member").child(user.getUid());
db.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
TextView tv = (TextView)findViewById(R.id.tv);
tv.setText(data.child("nickname").getValue().toString());
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}
});

数据库 JSON 结构:

{
"Member" : {
"1Zuv6VZZ0kPluwc33f1QQQ7DZD93" /* UID */ : {
"-LgIHwiAjfuh5pjK7wzl" : {
"actualScore" : 0,
"bestScore" : 0,
"email" : "some@email.com",
"nickname" : "Vitek",
"season" : 0
}
}
}
}

数据库结构: https://drive.google.com/file/d/15B4b6Rb_WAiS6fioI9gItyijrbDiVjzJ/view

我需要昵称,我觉得这写得不错,但不行。那么,到底出了什么问题呢?

最佳答案

要获取nickname 属性的值,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Member").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String nickname = dataSnapshot.child("nickname").getValue(String.class);
Log.d(TAG, nickname);
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

logcat 中的输出将是:

Vitek

因此,无需循环访问 DataSnapshot 对象即可获取 nickname 属性的值。如果您没有得到此结果,请检查 logcat 以查看是否打印出错误消息。

关于java - 单击按钮后单个 ValueEventListener 未获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56409438/

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