gpt4 book ai didi

java - 如何将多种类型的用户重定向到各自的 Activity?

转载 作者:行者123 更新时间:2023-12-01 23:12:23 25 4
gpt4 key购买 nike

我正在 Firebase 上创建一个投票应用。我有 3 种类型的用户。到目前为止,我可以在两种用户(学生、教师)使用下面的代码登录后成功地将他们重定向到各自的 Activity ,MY Users so far但现在我必须添加另一个用户(管理员),并且像其他用户一样,管理员也应该在登录后重定向到他们自己的特定 Activity 。我对如何为第三个用户修改我的代码感到困惑。

mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (mAuth.getCurrentUser() != null) {

String uid = mAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
uidRef = rootRef.child("STUDENTS").child(uid);

ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
//start students activity
startActivity(new Intent(MainActivity.this, student.class));

} else {
//start teachers activity
startActivity(new Intent(MainActivity.this, teacher.class));
}
}

//
@Override
public void onCancelled(DatabaseError databaseError)
{
}
};


uidRef.addListenerForSingleValueEvent(valueEventListener);

}
else{
Log.d("TAG", "firebaseUser is null");
}


}
};

最佳答案

仅使用 if (dataSnapshot.exists()) 无法解决您的 3 种用户问题。假设第三个用户的类型是3,则需要更改数据库结构。因此,您的新数据库架构应如下所示:

Firebase-root
|
--- users
|
--- uidOne
| |
| --- name: "Ed"
| |
| --- type: 1
|
--- uidTwo
| |
| --- name: "Tyff"
| |
| --- type: 2
|
--- uidOne
|
--- name: "Admin"
|
--- type: 3

现在您应该在 uid 节点上添加一个监听器并检查用户的类型,如下所示:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child("Type").getValue(Long.class) == 1) {
startActivity(new Intent(MainActivity.this, student.class));
} else if (dataSnapshot.child("TYPE").getValue(Long.class) == 2) {
startActivity(new Intent(MainActivity.this, teacher.class));
} else if (dataSnapshot.child("TYPE").getValue(Long.class) == 3) {
startActivity(new Intent(MainActivity.this, admin.class));
}
}

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

关于java - 如何将多种类型的用户重定向到各自的 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58368352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com