When you click on exit from the account, the application shows an error in the line: currentref.onDisconnect().removeValue();
java.lang.NullPointerException: Attempt to invoke virtual method com.google.android.gms.tasks.Task com.google.firebase.database.DatabaseReference.removeValue () 'on a null object reference at com.gulov.map.ListOverflow. onOptionsItemSelected (ListOverflow.java:125)
import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.ViewGroup; import com.firebase.ui.database.FirebaseRecyclerAdapter; import com.google.firebase.auth.FirebaseAuth; 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; public class ListOverflow extends AppCompatActivity { DatabaseReference onlineRef, currentUserRef, counterRef; FirebaseRecyclerAdapter<User, ListOnlineViewHolder> adapter; RecyclerView listOnline; RecyclerView.LayoutManager layoutManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_overflow); listOnline = (RecyclerView)findViewById(R.id.listOnline); listOnline.setHasFixedSize(true); layoutManager = new LinearLayoutManager(this); listOnline.setLayoutManager(layoutManager); Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); toolbar.setTitle("Systeme location"); setSupportActionBar(toolbar); onlineRef = FirebaseDatabase.getInstance().getReference().child(".info/connected"); counterRef = FirebaseDatabase.getInstance().getReference("lastOnline"); counterRef = FirebaseDatabase.getInstance().getReference("lastOnline").child(FirebaseAuth.getInstance().getCurrentUser().getUid()); setUpSysytem(); updateList(); } private void updateList() { adapter = new FirebaseRecyclerAdapter<User, ListOnlineViewHolder>(User.class, R.layout.card_layout, ListOnlineViewHolder.class, counterRef) { @Override protected void populateViewHolder(ListOnlineViewHolder viewHolder, User model, int position){ viewHolder.txtEmail.setText(model.getEmail()); } }; adapter.notifyDataSetChanged(); listOnline.setAdapter(adapter); } private void setUpSysytem() { onlineRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if (dataSnapshot.getValue(Boolean.class)){ currentUserRef.onDisconnect().removeValue(); counterRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(new User(FirebaseAuth.getInstance().getCurrentUser().getEmail(), "Online")); adapter.notifyDataSetChanged(); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); counterRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { for (DataSnapshot postSnapshot:dataSnapshot.getChildren()){ User user = postSnapshot.getValue(User.class); Log.d("LOG", "" +user.getEmail()+" is" + user.getStatus()); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.action_join: counterRef = FirebaseDatabase.getInstance().getReference("lastOnline").child(FirebaseAuth.getInstance().getCurrentUser().getUid()); break; case R.id.action_logout: currentUserRef.removeValue(); break; } return super.onOptionsItemSelected(item); } }