Я пытаюсь создать / обновить данные тревоги в базе данных Firebase в реальном времени.
Если для текущего пользователя имеются текущие данные о тревоге, я хочу его обновить.
У меня есть метод setClock и я пытаюсь контролировать, существуют ли данные, поэтому я пишу новый метод ( findAlarm), но я получил ошибку ссылки на нулевой объект.
Я использовал Log.e для контроля того, что он нулевой или нет, но он выглядит заполненным.
Я не понимаю, что такое мой неисправность. помогите пожалуйста
public void setClock( int hour, int minute){
Alarm alm=findAlarm();
if(alm==null){
String pushkey= databaseReference.push().getKey();
Log.e("push",pushkey);
Alarm alarm = new Alarm(hour,minute,firebaseUser.getUid(),pushkey);
databaseReference.child(pushkey).setValue(alarm);
}
else{
alm.setHour(hour);
alm.setMin(minute);
databaseReference.child(alm.getPushKey()).setValue(alm);
}
}
public Alarm findAlarm(){
final Alarm alarm2 = null;
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Log.e("hour", String.valueOf(postSnapshot.child("hour").getValue(int.class)));
Log.e("userid",postSnapshot.child("user").getValue(String.class));
Log.e("userid2",firebaseUser.getUid());
if(postSnapshot.child("user").getValue(String.class).equals(firebaseUser.getUid())) {
alarm2.setHour(postSnapshot.child("hour").getValue(int.class));
alarm2.setMin(postSnapshot.child("min").getValue(int.class));
alarm2.setPushKey(postSnapshot.child("pushKey").getValue(String.class));
alarm2.setUser(postSnapshot.child("user").getValue(String.class));
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return alarm2;
}
Logcat
E/hour: 23
E/userid: E3CFesWWcrM7WAJCPwDENbQCk2i2
E/userid2: E3CFesWWcrM7WAJCPwDENbQCk2i2
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.sozluk, PID: 7185
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.sozluk.Alarm.setHour(int)' on a null object reference
at com.example.sozluk.Scroll$2.onDataChange(Scroll.java:111)