- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
单击按钮后,我需要从 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/
我有一个 Firebase valueEvent 监听器: questions.orderByChild("CategoryID").equalTo(categoryID)
我正在使用 ValueEventListeners 从 Firebase 数据库中检索数据。现在我想从查询中删除 ValueEventListener。像这样: query.removeEventLi
出于某种原因,当我在 fragment 中调用 getTitle() 时,它总是返回 null。似乎根本没有添加 ValueEventListener。 当我在监听器内调试或打印 title 的值时,
单击按钮后,我需要从 Firebase 实时数据库获取昵称值。所以我在按钮的 onClick 方法中创建了 singleValueListner() 。但这不起作用。 我尝试过调试它,但代码没有进入s
值事件监听器在每个 Activity 中都正常工作。但在我的注册 Activity 中,花费了超过 2 分钟。我不知道为什么。 这是我的方法 private void verifyuserinpu
我有一个 valueEventListener() 用于从 Firebase 获取数据。 这是第一个。 sectionReference.child(classID).addValueEventLis
我有这个标准的 Firebase 调用: ref.child("user/toys/-K2873267832") .addListenerForSingleValueEvent(new Valu
应用说明 我的应用程序从 Firebase 数据库中检索数据。首先,我将 java 对象正确推送到数据库,并且可以毫无问题地检索数据,使用 Fragments onActivityCreated 中的
我有一个名为“bg”的全局变量。它在 firebase 数据库引用“myRef”的 ValueEventListener 中初始化 但是如果我尝试在 valueeventlistener block
DatabaseReference Ref = FirebaseDatabase.getInstance().getReference(Constants.Client + "/" + path);
我正在尝试使用信号量来等待我的 firebase valueEventListener。我有一个用户信息 Activity ,其中包含用户必须填写的 6 个不同字段。当用户保存他/她的信息时,我想进行
我正在尝试从 Firebase 获取字符串列表,只有在检索到所有数据后,我才会更新我的 UI。目前我在 fragment 类中使用以下代码来实现此目的。 taskList = new ArrayLis
在我下面的代码中,函数 setPhoto(url) 始终接收空 url,但如果我通过单击按钮调用另一个函数并且它需要该 url,它就会正确接收数据。 @Override protected void
我正在尝试使用代码 straight from their documentation 从 Firebase 数据库中读取数据。我的代码如下,当我尝试将 ValueEventListener 添加到我
我有一个使用 Google Firebase 的 Android 应用。 我需要下载带有随机 ID 的图像。 我有一个函数必须返回随机图片的位图。在此函数中,我从单独的数据库条目中读取图片数量,然后生
我正在尝试检测 Firebase 数据库中的值更改。这是我初始化 ValueEventListener 的代码: valueEventListener = new ValueEventListener
我的 Android 应用中遇到了 Firebase 实时数据库的问题。 我正在尝试的是实时更新列表。但更新仅适用于应用程序启动。它不会自动更新。因此,我需要在需要更新时重新启动应用程序。 有没有遗漏
我正在尝试使用接口(interface)异步检查我的 Firebase 数据库中的条目,但我不确定如何以与密码和电子邮件相同的方式实现它。 例子: if (TextUtils.isEmpty(pass
我已经追踪我的代码找到崩溃的根本原因,显然这个构造函数无法更新类的变量。当我试图从此类获取数据时出现空指针异常。您可以安全地假设记录已经在数据库中,它所要做的只是获取数据并将其放入类/对象中。我现在只
我试图返回一个 bool 值,但返回的值始终为 false,即在本例中为 0。 检查变量是一个实例变量,按下按钮时将调用以下函数。 private boolean checkAnswerSubmiss
我是一名优秀的程序员,十分优秀!