我正在编写一个应用程序,您需要登录,然后转到另一个页面。我在字段中输入数据,单击登录按钮,但没有转换到另一个页面。应用程序崩溃
我在应用程序中使用firebase数据库
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
loginemail = (EditText) findViewById(R.id.email);
loginpassword = (EditText) findViewById(R.id.password);
generatorBtn = (Button) findViewById(R.id.idBtnGenerator);
RegistrationBtn = (Button) findViewById(R.id.register);
generatorBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!validateEmail() | !validatePassword()) {
return;
} else if(validateEmail() && validatePassword()) {
checkUser();
} else {
Toast.makeText(getApplicationContext(), "Успешно", Toast.LENGTH_SHORT).show();
Intent i = new Intent(ActivityLogin.this, GeneratorQRcodeActivity.class);
startActivity(i);
}
}
});
RegistrationBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(ActivityLogin.this,
RegistrationActivity.class);
startActivity(i);
}
});
}
public Boolean validateEmail() {
String val = loginemail.getText().toString();
if (val.isEmpty()) {
loginemail.setError("Адрес электронной почты не заполнен");
return false;
} else {
loginemail.setError(null);
return true;
}
}
public Boolean validatePassword() {
String val = loginpassword.getText().toString();
if (val.isEmpty()) {
loginpassword.setError("Пароль не заполнен");
return false;
} else {
loginpassword.setError(null);
return true;
}
}
public void checkUser() {
String userLoginEmail =
loginemail.getText().toString().trim();
String userPassword = loginpassword.getText().toString().trim();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("users");
Query checkUserDatabase = reference.orderByChild("email").equalTo(userLoginEmail);
checkUserDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
loginemail.setError(null);
String passwordFromDB = snapshot.child(userLoginEmail).child("password").getValue(String.class);
if (!Objects.equals(passwordFromDB, userPassword)) {
loginemail.setError(null);
} else {
loginpassword.setError("Недопустимая форма учетной записи");
loginpassword.requestFocus();
}
} else {
loginemail.setError("Пользователь не существует");
loginemail.requestFocus();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
我尝试了不同的循环转换,应用程序还是崩溃了
您必须首先将您的项目连接到 Firebase 项目,然后
使用以下代码通过 Firebase 登录。 (根据要求更改以下代码)
private void loginUser(String email, String password) {
auth.signInWithEmailAndPassword(email , password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
DatabaseReference reference= FirebaseDatabase.getInstance().getReference("Users").child(auth.getCurrentUser().getUid());
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
UserInformation user2=snapshot.getValue(UserInformation.class);
String key=snapshot.getKey();
SharedPreferences preferences=getApplication().getSharedPreferences("prefrence2",MODE_PRIVATE);
SharedPreferences.Editor editor=preferences.edit();
editor.putBoolean("login",true);
editor.putString("user_name",user2.getName());
editor.putString("email_login",email);
editor.putString("password_login",password);
editor.putString("user_Id",auth.getCurrentUser().getUid());
editor.commit();
Intent intent = new Intent(Login_Activity.this, MainActivity.class);
startActivity(intent);
finish();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
else {
Toast.makeText(Login_Activity.this, "Email or Password not found! or\n " +
"Internet Connection not Available", Toast.LENGTH_LONG).show();
}
}
});
}