запрос с firebase в реальном времени в Android studio

#java #android #firebase #firebase-realtime-database

#java #Android #firebase #firebase-база данных в реальном времени

Вопрос:

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

 TextView show7, signup_btn_label;
ImageButton imagebuttonn1;
EditText tourg_email_address, tourg_password;
Button btnn_login;
private FirebaseAuth mAuth1;
private DatabaseReference jLoginDatabase;
private FirebaseDatabase fDatabase;
ProgressDialog mProgressDialog;



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

    //initialise mProgressDialog
    mProgressDialog = new ProgressDialog(Logintourguide.this);
    show7 = (TextView) findViewById(R.id.forgot_password);
    show7.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(getApplicationContext(), Forgetpassword.class);
            startActivity(i);
        }
    });
    imagebuttonn1 = findViewById(R.id.imagebuttonn);
    imagebuttonn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finish();
        }
    });

    signup_btn_label = (TextView) findViewById(R.id.signup_btn_label);
    signup_btn_label.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(getApplicationContext(), activity_signup_tourguide.class);
            startActivity(i);
        }
    });
    tourg_email_address = (EditText) findViewById(R.id.tourg_email_address);
    tourg_password = (EditText) findViewById(R.id.tourg_password);
    btnn_login = (Button) findViewById(R.id.btnn_login);
    mAuth1 = FirebaseAuth.getInstance();
    btnn_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String emailPattern = "[a-zA-Z0-9._-] @[a-z] \. [a-z] ";

            final String email = tourg_email_address.getText().toString().trim();
            final String pass = tourg_password.getText().toString().trim();

            if (TextUtils.isEmpty(email)) {
                Toast.makeText(Logintourguide.this, "Please enter your email", Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(pass)) {
                Toast.makeText(Logintourguide.this, "Please enter your password", Toast.LENGTH_LONG).show();
                return;
            }


            if (tourg_password.length() < 8) {
                Toast.makeText(Logintourguide.this, "password must be 8 or long", Toast.LENGTH_LONG).show();
                return;
            }
            if (!email.matches(emailPattern)) {
                Toast.makeText(Logintourguide.this, "invalid email address", Toast.LENGTH_LONG).show();
                return;
            }


            //show dialog
            mProgressDialog.show();
            //set content view
            mProgressDialog.setContentView(R.layout.progress_dialog);
            //set transparent background
            mProgressDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
            ///FirebaseDatabase database = FirebaseDatabase.getInstance();

            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

            final String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
            //  DatabaseReference rootRef = FirebaseDatabase.getInstance()
            final DatabaseReference uidRef = FirebaseDatabase.getInstance().getReference("Users");
            final Query checkUser = uidRef.orderByChild("email").equalTo(email);
            checkUser.addValueEventListener(new ValueEventListener() {

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()) {
                        if (pass.equals(dataSnapshot.child("password").getValue())) {

                            if (dataSnapshot.child("sign up as").getValue().equals("Tour Guide")) {


                                String passwordfromDB = (String) dataSnapshot.child("password").getValue(String.class);
                                String emailfromDB = (String) dataSnapshot.child("email").getValue(String.class);
                                String fullNamefromDB = (String) dataSnapshot.child("fullName").getValue(String.class);
                                String phoneNumberfromDB = (String) dataSnapshot.child("phoneNumber").getValue(String.class);
                                //put it iin that intent so we can pass it to tourguide class
                                Intent intent = new Intent(getApplicationContext(), TourGuide_Profile.class);
                                intent.putExtra("full name", fullNamefromDB);
                                intent.putExtra("email", emailfromDB);
                                intent.putExtra("phone No", phoneNumberfromDB);
                                intent.putExtra("password", passwordfromDB);
                                mProgressDialog.dismiss();
                                Toast.makeText(Logintourguide.this, "welcome back tour guide!",
                                        Toast.LENGTH_SHORT).show();
                                startActivity(intent);


                            } else {
                                mProgressDialog.dismiss();
                                Toast.makeText(Logintourguide.this, "Sorry ! You are not authorized to access this application!",
                                        Toast.LENGTH_SHORT).show();

                            }
                        } else {
                            mProgressDialog.dismiss();
                            Toast.makeText(Logintourguide.this, "wrong password",
                                    Toast.LENGTH_SHORT).show();
                        }

                    } else {
                        mProgressDialog.dismiss();
                        Toast.makeText(Logintourguide.this, "no such user exist !",
                                Toast.LENGTH_SHORT).show();
                    }
                }


                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Log.d("Tag", databaseError.getMessage());
                }
            });
            // uidRef.addListenerForSingleValueEvent(valueEventListener);
            // checkUser.addListenerForSingleValueEvent(valueEventListener);


        }

    });
}
  

это изображение моей базы данных

Комментарии:

1. Вы проверяли, получаете ли вы какое-либо значение в datasnapshot?

2. извините, но я не знаю, как это сделать, можете ли вы объяснить подробнее:(?