我的应用程序中有两种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。有什么建议吗?
答案 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)
尝试以下步骤:
首先,将DataSnapshot
对象转换为User
类对象:
User user = dataSnapshot.getValue(User.class);
其次,尝试匹配您想要的数据,如下所示:
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);
}