Этот вопрос задавался по адресу: Сравнение строки EditText с дочерним значением базы данных firebase , и я использую это как руководство, но сталкиваюсь с проблемами, которые там не были решены. Я знаю, что Firebase предлагает варианты аутентификации, но мне нужно использовать реальное время. Я хочу сравнить 2 значения, введенные в моем имени пользователя и пароле EditTexts, с дочерними значениями в моей базе данных в реальном времени «Пользователи».
![](https://i.gyazo.com/8057f6e67e0221b82ce5ea15fcf5fd09.png)
Когда я запускаю свой код, я получаю
Попытка вызвать виртуальный метод 'java .lang.String java .lang .Object.toString () 'для ссылки на пустой объект
Я предполагаю, что либо / и username1, и / или password1 имеют значение null, и поэтому мой код не запускается.
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. Я новичок в кодировании, поэтому любая помощь будет принята с благодарностью. Большое спасибо!