I'm building a chat app with firebase and when I press the logout button the app stops and the error is NullPointerException:
attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference at com.example.aplicatieatestat.Adapter.UserAdapter$2.onDataChange(UserAdapter.java:131)
and I can't figure it out.
Here is the UserAdapter Code, hope it helps
import android.content.Context;
import android.content.Intent;
import android.media.Image;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.example.aplicatieatestat.MessageActivity;
import com.example.aplicatieatestat.Model.Chat;
import com.example.aplicatieatestat.Model.User;
import com.example.aplicatieatestat.R;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.List;
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.ViewHolder> {
    private Context mContext;
    private List<User> mUser;
    private boolean isactive;
    String last_message;
    public UserAdapter(Context mContext, List<User> mUser, boolean isactive) {
        this.mUser = mUser;
        this.mContext = mContext;
        this.isactive = isactive;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.user_item, parent, false);
        return new UserAdapter.ViewHolder(view);
    }
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        final User user = mUser.get(position);
        holder.username.setText(user.getUsername());
        if (user.getImageURL().equals("default")) {
            holder.profilepic.setImageResource(R.mipmap.ic_launcher);
        } else {
            Glide.with(mContext).load(user.getImageURL()).into(holder.profilepic);
        }
        if (isactive){
            last_msg_check(user.getId() , holder.last_msg);
        }
        else {
            holder.last_msg.setVisibility(View.GONE);
        }
        if (isactive) {
            if (user.getStatus().equals("online")) {
                holder.img_on.setVisibility(View.VISIBLE);
                holder.img_off.setVisibility(View.GONE);
            } else {
                holder.img_off.setVisibility(View.VISIBLE);
                holder.img_on.setVisibility(View.GONE);
            }
        } else {
            holder.img_off.setVisibility(View.GONE);
            holder.img_on.setVisibility(View.GONE);
        }
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mContext, MessageActivity.class);
                intent.putExtra("userid", user.getId());
                mContext.startActivity(intent);
            }
        });
    }
    @Override
    public int getItemCount() {
        return mUser.size();
    }
    public class ViewHolder extends RecyclerView.ViewHolder {
        public TextView username;
        public ImageView profilepic;
        private ImageView img_on;
        private ImageView img_off;
        private TextView last_msg;
        public ViewHolder(View itemView) {
            super(itemView);
            username = itemView.findViewById(R.id.username);
            profilepic = itemView.findViewById(R.id.profile_image);
            img_on = itemView.findViewById(R.id.img_online);
            img_off = itemView.findViewById(R.id.img_offline);
            last_msg = itemView.findViewById(R.id.last_message);
        }
    }
    private void last_msg_check(final String userid, final TextView last_msg) {
        last_message = "default";
        final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Chats");
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                    Chat chat = dataSnapshot1.getValue(Chat.class);
                    assert chat != null;
                    assert firebaseUser != null;
                    if (chat.getReceiver().equals(firebaseUser.getUid()) && chat.getSender().equals(userid) || chat.getReceiver().equals(userid) && chat.getSender().equals(firebaseUser.getUid())) {
                        last_message = chat.getMessage();
                    }
                }
                if (last_message == "default") {
                    last_msg.setText(" ");
                } else {
                    last_msg.setText(last_message);
                }
                last_message = "default";
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });
    }
}
And here is the main activity :
package com.example.aplicatieatestat;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.aplicatieatestat.Fragments.ChatsFragment;
import com.example.aplicatieatestat.Fragments.ProfileFragment;
import com.example.aplicatieatestat.Fragments.UsersFragment;
import com.example.aplicatieatestat.Model.User;
import com.google.android.material.circularreveal.CircularRevealLinearLayout;
import com.google.android.material.tabs.TabLayout;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
import de.hdodenhof.circleimageview.CircleImageView;
public class MainActivity extends AppCompatActivity {
   CircleImageView profilepic;
   TextView username;
   FirebaseUser firebaseUser;
   DatabaseReference reference;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       Toolbar toolbar = findViewById(R.id.toolbar);
       setSupportActionBar(toolbar);
       Objects.requireNonNull(getSupportActionBar()).setTitle("");
       profilepic = findViewById(R.id.profile_image);
       username = findViewById(R.id.username);
       firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
       reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());
       reference.addValueEventListener(new ValueEventListener() {
           @Override
           public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
               User user = dataSnapshot.getValue(User.class);
               assert user != null;
               username.setText(user.getUsername());
               if (user.getImageURL().equals("default")) {
                   profilepic.setImageResource(R.mipmap.ic_launcher);
               } else {
                   Glide.with(getApplicationContext()).load(user.getImageURL()).into(profilepic);
               }
           }
           @Override
           public void onCancelled(@NonNull DatabaseError databaseError) {
           }
       });
       TabLayout tabLayout = findViewById(R.id.tab_layout);
       ViewPager viewPager = findViewById(R.id.view_pager);
       ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
       viewPagerAdapter.addFragment(new ChatsFragment(), "Chats");
       viewPagerAdapter.addFragment(new UsersFragment(), "Users");
       viewPagerAdapter.addFragment(new ProfileFragment(), "Profile");
       viewPager.setAdapter(viewPagerAdapter);
       tabLayout.setupWithViewPager(viewPager);
   }
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.menu, menu);
       return true;
   }
   @Override
   public boolean onOptionsItemSelected(@NonNull MenuItem item) {
       if (item.getItemId() == R.id.logout) {
           FirebaseAuth.getInstance().signOut();
           startActivity(new Intent(MainActivity.this, StartActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
           finish();
           return true;
       }
       return false;
   }
class ViewPagerAdapter extends FragmentPagerAdapter {
       private ArrayList<Fragment> fragments;
       private ArrayList<String> titles;
       ViewPagerAdapter(FragmentManager fragmentManager){
       super(fragmentManager);
       this.fragments = new ArrayList<>();
       this.titles = new ArrayList<>();
       }
   @NonNull
   @Override
   public Fragment getItem(int position) {
       return fragments.get(position);
   }
   @Override
   public int getCount() {
       return fragments.size();
   }
   public void addFragment(Fragment fragment, String title)
   {
       fragments.add(fragment);
       titles.add(title);
   }
   @Nullable
   @Override
   public CharSequence getPageTitle(int position) {
       return titles.get(position);
   }
}
private  void  status(String status){
       reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());
   HashMap<String, Object> hashMap = new HashMap<>();
   hashMap.put("status", status);
   reference.updateChildren(hashMap);
}
   @Override
   protected void onResume() {
       super.onResume();
       status("online");
   }
   @Override
   protected void onPause() {
       super.onPause();
       status("offline");
   }
}
Thanks in advance for your answers!
 
    