Я получаю ошибку «NullPointerException: firebase.auth.FirebaseUser.getUid () при ссылке на нулевой объект». Дело в том, что мой FirebaseUser.getUid () не равен нулю. Я проверил это с помощью log.d и обнаружил, что идентификатор пользователя совпадает с идентификатором в firebase. Так что я не знаю, в чем может быть проблема. Пожалуйста, помогите
Вот код:
//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 не должен быть нулевым, верно?