针对不同用户的单独活动

时间:2019-03-22 08:26:58

标签: android firebase

我有一个android项目,其中有两种不同的用户类型:管理员和普通用户。 实际上,我在这里找到了一个解决方案,而不是一个特别的解决方案,因为它不适用于我。

Home Fragment.java

public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    final String uid = user.getUid();
    Query userQuery = FirebaseDatabase.getInstance().getReference().child("User").child(uid).child("isAdmin");

    userQuery.addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            String type = dataSnapshot.child("isAdmin").getValue().toString();

            if(type.equals("true")){

                loadMenuBeachAdmin();

                FloatingActionButton fab = (FloatingActionButton) homeView.findViewById(R.id.fab);
                fab.show();
      }
}

数据库

enter image description here

我遇到的错误:

java.lang.NullPointerException: Attempt to invoke virtual method
        'java.lang.String java.lang.Object.toString()' on a null object reference at 
com.example.batangasbeachhousesfinal.HomeFragment$1.onDataChange(HomeFragment.java:92)

它是字符串type = dataSnapshot.child("isAdmin").getValue().toString();

1 个答案:

答案 0 :(得分:1)

更改此:

 Query userQuery = FirebaseDatabase.getInstance().getReference().child("User").child(uid).child("isAdmin");
userQuery.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        String type = dataSnapshot.child("isAdmin").getValue().toString();
        if(type.equals("true")){
            loadMenuBeachAdmin();


            FloatingActionButton fab = (FloatingActionButton) homeView.findViewById(R.id.fab);
            fab.show();

   }
}

对此:

Query userQuery = FirebaseDatabase.getInstance().getReference().child("User").child(uid);
userQuery.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        String type = dataSnapshot.child("isAdmin").getValue().toString();
        if(type.equals("true")){
            loadMenuBeachAdmin();


            FloatingActionButton fab = (FloatingActionButton) homeView.findViewById(R.id.fab);
            fab.show();

  }
}

您的dataSnapshot已经在子isAdmin处,因此您需要向上移动一步,然后才能检索isAdmin子。