Кнопка входа в систему перенаправляет на главную страницу вместо страницы пользователя в приложении android Studio с базой данных firebase в реальном времени - PullRequest
1 голос
/ 09 мая 2020

Firebase Real time Database

    public class loginActivity extends AppCompatActivity {

    TextView signup;
    TextInputLayout phone,pass;
    Button btn_login;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        signup = findViewById(R.id.txt_signup);
        phone = findViewById(R.id.phone);
        pass = findViewById(R.id.pass);
        btn_login = findViewById(R.id.btn_login);
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                loginUser(view);
            }
        });

    }

    private boolean validatePhone(){
        String p = phone.getEditText().getText().toString();
        if(p.isEmpty()){
            phone.setError("field is empty!");
            return false;
        }
        else {
            phone.setError(null);
            phone.setErrorEnabled(false);
            return true;
        }
    }

    private boolean validatePass(){
        String p = pass.getEditText().getText().toString();
        if(p.isEmpty()){
            pass.setError("field is empty!");
            return false;
        }
        else {
            pass.setError(null);
            pass.setErrorEnabled(false);
            return true;
        }
    }

    public void loginUser(View v){
        if(!validatePhone() | !validatePass()){
            return;
        }
        else {
            isUser();
        }
    }

    private void isUser(){
        final String appPhone = Objects.requireNonNull(phone.getEditText()).getText().toString().trim();
        final String appPass = Objects.requireNonNull(pass.getEditText()).getText().toString().trim();

        DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("users");
        Query checkUser = databaseReference.orderByChild("phone").equalTo(appPhone);
        checkUser.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if(dataSnapshot.exists()){
                    phone.setError(null);
                    phone.setErrorEnabled(false);

                    String fbasePass = dataSnapshot.child("pass").getValue(String.class);
                    assert fbasePass != null;
                    if(fbasePass.equals(appPass)){

                        phone.setError(null);
                        phone.setErrorEnabled(false);

                       // String uPhone = dataSnapshot.child(appPhone).child("phone").getValue(String.class);
                        String uPhone = dataSnapshot.child("phone").getValue(String.class);
                        String uAadhar = dataSnapshot.child("aadhar").getValue(String.class);
                        String ucity = dataSnapshot.child("city").getValue(String.class);
                        String ufname = dataSnapshot.child("fname").getValue(String.class);
                        String uemail = dataSnapshot.child("email").getValue(String.class);
                        Intent intent = new Intent(getApplicationContext(),usrHome.class);
                        intent.putExtra("phone",uPhone);
                        intent.putExtra("aadhar",uAadhar);
                        intent.putExtra("city",ucity);
                        intent.putExtra("fname",ufname);
                        intent.putExtra("email",uemail);
                        startActivity(intent);
                    }
                    else {
                        pass.setError("Wrong password");
                        pass.requestFocus();
                    }
                }
                else {
                    phone.setError("Please Create Account First");
                    phone.requestFocus();
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });
    }
}

когда я нажимаю кнопку входа в систему, это временно приостанавливается и автоматически перенаправляется на главную страницу моего приложения. Я использовал данные из базы данных firebase в реальном времени при входе в систему. пожалуйста, помогите мне с этим .. я потратил свои 2 дня на решение этой проблемы, но ничего не работает.

в случае, если у вас есть другой код, который может выполнить это требование, чем дайте мне знать.

1 Ответ

1 голос
/ 09 мая 2020

Вы запускаете LoginActivity до того, как Firebase фактически выйдет из системы. Попробуйте добавить FirebaseAuth.AuthStateListener и просто запустите LoginActivity при срабатывании прослушивателя. См. Этот пост: Выход из Firebase не приводит к правильному действию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...