首页 > 解决方案 > 为两种不同的用户类型启动两种不同的活动

问题描述

当用户使用 userType “student”登录时,显示MainActivity并且对于“teacher”,显示MainActivityTeacher。我正在尝试调整onStart()我的功能,LoginActivity因为它具有 action.MAIN。

试图获取当前用户的用户类型以及用户类型是否为学生,用户类型SendToMainActivity() 是否为教师,SendToMainActivityTeacher()但我不知道如何获取。另外,我尝试使用 . parent()这样我就可以使用字符串学生或老师,但它正在获取string我的项目名称。

Firebase 数据库:

  Students
     - 7x7novsG59UsFa1QyBp4K8bd2X82
         - userType: "student"
         - username: "student00"
  Teachers
     - xTfg4if4yLQ75zRq889pJkmCBsh1
         - userType: "teacher"
         - username: "teacher01@gmail.com"  

活动:

<activity android:name=".LoginActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

代码:

@Override
protected void onStart() {
    super.onStart();
    FirebaseUser currentUser = mAuth.getCurrentUser();

    String currUserId = currentUser.getUid();
    DatabaseReference dataRef = FirebaseDatabase.getInstance().getReference(currUserId).getParent();
    String StrDataRef = dataRef.toString();
    dataRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            String userType = dataSnapshot.getValue();

        }

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

        }
    });

标签: androidfirebasefirebase-realtime-database

解决方案


onCreate()您可以使用以下方法检查您的用户

if(userType == "student"){
// set student layout
}else if(userType == "teacher") {
// set teacher layout
}

和使用setContentView()方法。在这种情况下,您将有一个活动,但您应该为它们提供两种不同的布局。

或者

如果您有登录活动,您可以将此登录页面作为启动器活动,并在此处检查此用户是否为老师,并将用户重定向到必要的活动。


推荐阅读