我有一个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();
}
}
数据库
我遇到的错误:
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();
答案 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
子。