android - 为两种不同的用户类型启动两种不同的活动
问题描述
当用户使用 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) {
}
});
解决方案
onCreate()
您可以使用以下方法检查您的用户
if(userType == "student"){
// set student layout
}else if(userType == "teacher") {
// set teacher layout
}
和使用setContentView()
方法。在这种情况下,您将有一个活动,但您应该为它们提供两种不同的布局。
或者
如果您有登录活动,您可以将此登录页面作为启动器活动,并在此处检查此用户是否为老师,并将用户重定向到必要的活动。
推荐阅读
- python - nginx 不会从 http 切换到 https
- python-3.x - 基于 Glunts deepstate 模型的预测在 Linux OS 上运行时速度较慢
- javascript - 为什么状态没有更新?
- javascript - 如何在不重复的情况下使用 jQuery 附加 HTML 元素?(来自 AJAX 响应)
- javascript - 如何为使用 javascript 添加的每个列表项添加删除按钮?
- php - 获取所有名称父 SQL
- html - 对齐右看板视图 Odoo
- python - 可变数量的泛型类型
- javascript - 扫描记忆游戏中是否进行了所有匹配
- wordpress - Wordpress - WooCommerce 简单拍卖多订单