应用程序中的授权系统以及到另一个页面的转换

问题描述 投票:0回答:1

我正在编写一个应用程序,您需要登录,然后转到另一个页面。我在字段中输入数据,单击登录按钮,但没有转换到另一个页面。应用程序崩溃

我在应用程序中使用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) {

            }
        });

 }

我尝试了不同的循环转换,应用程序还是崩溃了

java android firebase generator qr-code
1个回答
0
投票

您必须首先将您的项目连接到 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();
            }
        }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.