gpt4 book ai didi

java - 从 Firebase 获取值

转载 作者:行者123 更新时间:2023-12-02 11:31:28 25 4
gpt4 key购买 nike

我是 Firebase 新手,决定先尝试一下。但是,我在从查询中检索值时遇到问题。我基本上是想获取密码值,但我相信它什么也没有返回。

Image

错误:

java.lang.NullPointerException: println needs a message

loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username = usernameField.getText().toString();
String password = passwordField.getText().toString();

db.child("Users").orderByChild("username").equalTo(username).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
//Get the password,and check it against the password field
Map<String, String> map = (Map<String, String>)dataSnapshot.getValue();

Log.d("result", map.get("password"));

} else {
Toast.makeText(getApplicationContext(), "Incorrect login details", Toast.LENGTH_SHORT).show();
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}
});

我知道这不太实用,但就像我说的,我只是在练习。

感谢您的帮助!

最佳答案

当您对 Firebase 数据库执行查询时,可能会出现多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

您的 onDataChange 中的代码需要注意以下事实:snapshot是一个列表,通过循环其 snapshot.getChildren() :

db.child("Users").orderByChild("username").equalTo(username).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
//Get the password,and check it against the password field
Map<String, String> map = (Map<String, String>)snapshot.getValue();

Log.d("result", map.get("password"));
}
}

关于java - 从 Firebase 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49265708/

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