简体   繁体   English

如何将不同的用户重定向到不同的活动?

[英]How to redirect different users to different activites?

数据库

This is my database structure, and I want users to be redirected to their respective activities based on their TYPE.这是我的数据库结构,我希望用户根据他们的 TYPE 被重定向到他们各自的活动。 I don't know the logic or syntax.我不知道逻辑或语法。 For someone reasons nothing seems to work.由于某些原因,似乎没有任何效果。

   mAuthListener= new FirebaseAuth.AuthStateListener() {
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            if (firebaseAuth.getCurrentUser() != null) {
                startActivity(new Intent(login.this, MainActivity.class));
            }
        } };

    cardView1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startsignin();

        }
    });
        }

@Override
protected void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthListener);
                         }

    private void startsignin()
    {
        String email = editText.getText().toString();
        String password = editText2.getText().toString();
   if (TextUtils.isEmpty(email) || TextUtils.isEmpty(password)){
       Toast.makeText(login.this,"Some fields are empty",        
       Toast.LENGTH_LONG).show();
       }
  else

      {                                                                                                     mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
          @Override
          public void onComplete(Task<AuthResult> task) {
              if (!task.isSuccessful())
              {
                  Toast.makeText(login.this,"Sign in failed", Toast.LENGTH_LONG).show();
              }

          }
      });


         }
    }

To solve this, I recommend you to use the following lines of code:为了解决这个问题,我建议您使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("STUDENTS").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(dataSnapshot.exists()) {
            //start students activity
        } else {
            //start teachers activity
        }
    }

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM