Java 为什么我能';t从Firebase实时数据库检索用户名和密码
我想使用Firebase实时数据库中存储的用户名和密码登录。但是我的代码不起作用。我包括我的数据库图片和代码。请帮帮我 这是数据库映像: 这是我的主要活动代码MainActivity.javaJava 为什么我能';t从Firebase实时数据库检索用户名和密码,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想使用Firebase实时数据库中存储的用户名和密码登录。但是我的代码不起作用。我包括我的数据库图片和代码。请帮帮我 这是数据库映像: 这是我的主要活动代码MainActivity.java databaseReference=FirebaseDatabase.getInstance().getReference("Client"); btn.setOnClickListener(new View.OnClickListener() { @Override
databaseReference=FirebaseDatabase.getInstance().getReference("Client");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Query query = databaseReference.child("Client").orderByChild("username").equalTo(editTextUsername.getText().toString().trim());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot user : dataSnapshot.getChildren()) {
Users usersBean = user.getValue(Users.class);
if (usersBean.password.equals(editTextPassword.getText().toString().trim())) {
Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "wrong", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
下面是我的用户java类users.java
public class Users {
String email;
String id;
String password;
String username;
public Users() {
}
public Users(String email, String id, String password, String username) {
this.email = email;
this.id = id;
this.password = password;
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
要解决此问题,请更改以下代码行:
databaseReference=FirebaseDatabase.getInstance().getReference("Client");
到
无需获取客户端
节点的引用,因为您在查询中使用了对.child(“客户端”)
的调用
编辑:
要根据您的评论解决您现在遇到的错误,请将Users
类中id
属性的类型从String
更改为long
,并将getter和setter更改为如下所示:
public class Users {
String email;
long id;
String password;
String username;
public Users() {
}
public Users(String email, long id, String password, String username) {
this.email = email;
this.id = id;
this.password = password;
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
不工作。当我单击按钮时,应用程序停止。@Alex Mamoi如果应用程序崩溃,则会出现堆栈跟踪。请在logcat上查找,并将其添加到您的问题中。这是logcat@Alex Mamono不工作…我尝试添加indexOn仍然失败..请在IDE中实现它并运行..@Alex Mamo“不工作”没有帮助。为什么不工作?到目前为止,我们修正了两个错误,通常一次只回答一个问题。现在有什么问题?你还有其他错误吗?
public class Users {
String email;
long id;
String password;
String username;
public Users() {
}
public Users(String email, long id, String password, String username) {
this.email = email;
this.id = id;
this.password = password;
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}