【问题标题】:How to redirect to different pages based on Firebase Information [duplicate]如何根据 Firebase 信息重定向到不同的页面 [重复]
【发布时间】:2021-02-04 05:42:09
【问题描述】:

Firebase Structure

对于我的项目,我希望允许用户在单击带有电子邮件和密码方法的 firebase 登录按钮后,根据他们的身份(例如:买家、卖家)登录到各自的主页。我不确定如何完成它。

这是我尝试过的,我被引导到买家和卖家的卖家主页。

 fAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
              @Override
              public void onComplete(@NonNull Task<AuthResult> task) {
                  if (task.isSuccessful()) {
                      db = FirebaseDatabase.getInstance().getReference("users");
                      db.addValueEventListener(new ValueEventListener() {
                          @Override
                          public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                              for (DataSnapshot ds : dataSnapshot.getChildren() ) {
                                  String userType = ds.child("type").getValue(String.class);
                                  if (userType.equals("Buyer")) {
                                      startActivity(new Intent(MainActivity.this,BuyerHomepage.class));
                                  }
                                  else if(userType.equals("Seller")) {
                                      startActivity(new Intent(MainActivity.this,SellerHomepage.class));
                                  }
                              }
                          }

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

                          }
                      });
                  }
                  else {
                      Toast.makeText(MainActivity.this,"Error !" +task.getException().getMessage(),Toast.LENGTH_SHORT).show();
                  }
              }
          });

【问题讨论】:

    标签: java android android-studio firebase-realtime-database firebase-authentication


    【解决方案1】:

    @Danial 检查此代码

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference("users");
    rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            for (DataSnapshot dataSnapshot:snapshot.getChildren()){
                String mail=dataSnapshot.child("type").getValue().toString();
                 if (userType.equals("Buyer")) {
              startActivity(new Intent(MainActivity.this,BuyerHomepage.class));
                                  }
                                if(userType.equals("Seller")) {
               startActivity(new Intent(MainActivity.this,SellerHomepage.class));
                                  }
            }
      
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError error) {
    
        }
    });
    

    【讨论】:

    • @Daniel 你的数据库有问题,Banzi 是什么?请解释一下
    • 这是用户的全名。我已经使用 push() 方法更改了代码,所以现在它显示用户的唯一键而不是全名。
    • @Daniel 我希望当您使用 push() 时,它会开始工作。
    • @Daniel 我编辑了答案,请检查一下,如果您使用的是推送 ID 而不是“Tester”等,那么此代码将起作用:)
    • 好的,我会在我课后检查代码。感谢您到目前为止的帮助。
    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2011-11-06
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多