Android-Firebase访问级别

时间:2018-11-03 22:25:36

标签: java android firebase firebase-realtime-database firebase-authentication

我是Android开发的新手,仍在学习基础知识,并尝试获得不同的访问权限。我的数据库中具有此结构,我在获取status的值并将其用作用户类型

Database Structrure

我收到此错误

java.lang.String java.lang.Object.toString()' on a null object reference
at com.example.gab.quadrantms.LoginActivity$1$1$1.onDataChange(LoginActivity.java:116)

登录

private DatabaseReference mUserType;
mUserType = FirebaseDatabase.getInstance().getReference().child("Users").child("status");

mUserType.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    // THIS IS WHERE THE ERROR IS POINTING
    String status = dataSnapshot.child("status").getValue().toString();
     if(status.equals("Project Manager"))
     {
        Intent intent = new Intent(LoginActivity.this, Home.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
     }
     else
     {
        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
     }
  }

1 个答案:

答案 0 :(得分:2)

FirebaseReference ref=FirebaseDatabase.getInstance().getReference().child("Users").child(current_user_id);

ref.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {

      String status = dataSnapshot.child("status").getValue().toString();
      if(status.equals("Project Manager"))
      {
        Intent intent = new Intent(LoginActivity.this, Home.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
      }
      else
      {
        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
      }
  }

首先,您需要创建对节点Users的引用,然后由于需要访问子节点status,并且由于在节点Users下具有随机ID,因此需要创建引用。您必须在dataSnapshot的直接子级(在本例中为节点Users)中循环,然后才能获得status的值。

相关问题