【发布时间】:2020-01-09 17:31:06
【问题描述】:
这个问题已在:Comparing EditText string with firebase database's child value 提出,我以此为指导,但遇到了在那里没有解决的问题。我知道 Firebase 提供身份验证选项,但我现在需要使用实时。我希望将在我的用户名和密码 EditTexts 中输入的 2 个值与我的实时数据库“用户”中的子值进行比较。
当我运行我的代码时,我得到一个
尝试在空对象引用上调用虚拟方法“java.lang.String java.lang.Object.toString()”
我假设 username1 和/或 password1 都为空,这就是我的代码无法运行的原因。
logUsername = findViewById(R.id.etLoginUsers);
logPassword = findViewById(R.id.etLoginPassword);
FirebaseApp.initializeApp(this);
final DatabaseReference mDatabaseRef = FirebaseDatabase.getInstance().getReference().child("Users");
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String username = logUsername.getText().toString().trim();
final String password = logPassword.getText().toString().trim();
mDatabaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String username1 = dataSnapshot.child("username").getValue().toString();
String password1 = dataSnapshot.child("password").getValue().toString();
if (username.equals(username1) & password.equals(password1)){
Intent intSignIn = new Intent(MainActivity.this, HomeActivity.class);
startActivity(intSignIn);
} else {
Toast.makeText(MainActivity.this, "Incorrect Login Details", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
。我的读写规则都设置为 true。我是编码新手,所以任何帮助将不胜感激。非常感谢!
【问题讨论】:
标签: java android firebase firebase-realtime-database firebase-authentication