Android,Firebase - 为用户显示正确的活动

时间:2017-09-29 11:58:13

标签: android firebase-realtime-database

我的应用程序中有两种usertypes。我使用Firebase实时数据库来存储用户名和usertype而不使用Firebase身份验证。我的数据库:

User
 Unique ID
  username: John
  usertype: Teacher

我的问题是我如何根据usertype将用户发送到活动。我以为我可以这样做:

database.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.child("usertype").equals("Teacher") ){
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
            } else {
               Intent intent = new Intent(MainActivity.this, ThirdActivity.class);
               startActivity(intent);
            }
        }

但这似乎不起作用,因为它总是适用于ThirdActivity。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

要解决此问题,您需要使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("User").child(userId);

usersRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(dataSnapshot.child("usertype").getValue(String.class).equals("Teacher") ){
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        } else {
           Intent intent = new Intent(MainActivity.this, ThirdActivity.class);
           startActivity(intent);
        }
    }
}

如果您使用身份验证,要获取ID,您需要使用以下代码行:

FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
String userId = firebaseUser.getUid();

如果您不使用身份验证,则需要store the uid in a variable。当您生成该ID时,您需要存储它。通过这种方式,您可以在以后使用它。

答案 1 :(得分:1)

尝试以下步骤:

  1. 首先,将DataSnapshot对象转换为User类对象:

    User user = dataSnapshot.getValue(User.class);

  2. 其次,尝试匹配您想要的数据,如下所示:

    if (user.getUserType.equals("UserName"))
    {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        startActivity(intent);
    } else {
        Intent intent = new Intent(MainActivity.this, ThirdActivity.class);
        startActivity(intent);
    }