在FirebaseUser.getUid()上获取NullPointerException

问题描述 投票:0回答:1

我在空对象引用上收到“ NullPointerException:firebase.auth.FirebaseUser.getUid()”错误。问题是我的FirebaseUser.getUid()不为null。我使用log.d进行了检查,发现用户的ID与firebase上的ID匹配。所以我不知道可能是什么问题。请帮助

这里是代码:

//tabLayout sets up the tabs to switch from chats <--> user
    //viewPager allows swiping motion between tabs
    tabLayout = findViewById(R.id.tablayout);
    viewPager = findViewById(R.id.viewpager);


    firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    reference = FirebaseDatabase.getInstance().getReference("Chats");
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            //we need to create adapter using ViewPager --> create ViewPageAdapter
            ViewPageAdapter viewPageAdapter = new ViewPageAdapter(getSupportFragmentManager());
            //counter for # of unread messages
            int unread = 0;

            //create chat objects from firebase data
            //----------------------------ERROR STARTS HERE--------------------------------
            for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
                Chat chat = snapshot.getValue(Chat.class);
                Log.d("firebaseUserID", firebaseUser.getUid());

                //if firebaseUser is the receiver of text and they have not opened text yet --> increment unread
                    if (chat.getReceiver().equals(firebaseUser.getUid()) && !chat.isSeen()) {
                        unread++;
                    }
            }
            //set on viewPager accordingly
            if(unread == 0) {
                //make ChatsFragment obj inside adapter
                viewPageAdapter.addFragment(new ChatsFragment(), "Chats");
            }
            else {
                //make ChatsFragment obj inside adapter
                viewPageAdapter.addFragment(new ChatsFragment(), "(" + unread + ") Chats");
            }

            //make UsersFragment obj inside adapter
            viewPageAdapter.addFragment(new UsersFragment(), "Users");
            //set adapter to ViewPager
            viewPager.setAdapter(viewPageAdapter);
            //set ViewPager to tabLayout
            tabLayout.setupWithViewPager(viewPager);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

错误消息

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.moneymoves, PID: 31665
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference
    at com.example.moneymoves.MainActivity$1.onDataChange(MainActivity.java:73)
    at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.3.0:75)
    at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.3.0:63)
    at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.3.0:55)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)

这是我的日志函数输出的内容

D / firebaseUserID:XHYXsfwQJQXcy3lOhFeM08vwity1

因此,FirebaseUser不应为null,对吗?

android firebase nullpointerexception firebase-authentication
1个回答
0
投票

尝试声明String firebaseUserId = firebaseUser.getUid();并在所需的地方使用它。另外,请使用String声明上方的assert firebaseUser != null;以避免空对象引用错误。

应该看起来像这样:

assert firebaseUser != null;
String firebaseUserId = firebaseUser.getUid();
© www.soinside.com 2019 - 2024. All rights reserved.