java - Android - Firebase 访问级别

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

我是 Android 开发新手,仍在学习基础知识并尝试获得不同的访问权限我的数据库中有此结构我正在获取状态值并使用 at 作为用户类型

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);
     }
  }

最佳答案

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,并且由于您在节点下有一个随机ID >用户。您必须在 dataSnapshot 的直接子级(在本例中为节点 Users)内循环,您将能够获取 status 的值。

关于java - Android - Firebase 访问级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53136035/

相关文章:

java - 使用 RecyclerView GridLayoutManager 通过 ItemDecoration 制作列间距时 Item 宽度不一样

java - 使用 Firebase 实时数据库在重新启动时重置警报

Firebase 存储规则自定义元数据不起作用

java - 通过 SOCKS 协议(protocol)的 HTTP 请求

java - Z3 for Java 中关于 check() 的性能

java - 如何使用 Apache Flink 删除 Cassandra 中的行?

java - 如何在调用java中的默认构造函数之前设置变量?

java - 我无法通过按按钮打开聊天 Intent

java - Android ListView 自定义行

javascript - 如何将每个用户对象合并到数组的可观察对象中?