При нажатии на выход из аккаунта приложение показывает ошибку в строке: 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);
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Тут почитал wikivg/Protocol и попробовал составить простенький сервер
Проблема следующая: При парсинге sparql запроса я получаю упрощённое ast и мне нужно его передать в стороннюю библиотеку для дальнейшей обработки,...
Изучаю Retrofit2, пытаюсь получить токен Yandex disk, в документации яндекса написано, чтобы получить токен необходимо для начала подтвердить разрешения...
В разметке активити есть область, в которой должны поместиться изображения(от 1 до 10)Соответственно они должны заполнять всю эту область...