У меня есть 2 разных фрагмента: один с EventListener, который проверяет изменения в Firebase, это код:
dbUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
favo_team_view = (TextView) myView.findViewById(R.id.favo_team_textview);
if(!(user.getTeam() == null)) {
favo_team_view.setText("Your favourite team is: " + user.getTeam());
} else {
favo_team_view.setText("Your favourite team is: " );
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
И еще один фрагмент, который удаляет запись в базе данных и запускает намерениезапустить SignInActivity (оба фрагмента являются частью MainActivity);это код
Button deleteUserButton = myView.findViewById(R.id.delete_user);
deleteUserButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String uid = auth.getUid();
final DatabaseReference dbUsers = FirebaseDatabase.getInstance().getReference("users").child(uid);
auth.getCurrentUser().delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
dbUsers.setValue(null);
signOut();
}else{
displayMessage(getString(R.string.user_deletion_error));
}
}
});
}
});
private void signOut(){
Intent signOutIntent = new Intent(myView.getContext(), SigninActivity.class);
startActivity(signOutIntent);
//finish();
}
Код работает в том, что запись в БД удаляется.Но мое приложение вылетает, и трассировка стека сообщает мне:
Java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String com.User.getTeam ()' для ссылки на нулевой объект в com.Выберите команду $ 1.onDataChange
Почему он это делает?Я не понимаю, почему Слушатель все еще проверяет изменения данных (этот фрагмент не активен / открыт, когда я удаляю базу данных)
Спасибо
PS: понял, что я не могу проверитьстрока == ноль, просто подумал, что я бы попробовал.То же самое без оператора if