Сначала я вызываю getUserMatchId () из моего основного, он отлично работает сам по себе, но затем, когда я добавил функцию activNotificationsMessages (), он начал обрабатывать sh. Я попытался закомментировать функцию activNotifications, и она работала нормально, может быть, это потому, что я вызываю childeventlistener внутри childeventlistener, но как мне решить эту проблему
private void getUserMatchId() {
DatabaseReference matchDb = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUserId).child("connections").child("matches");
ChildEventListener valueEventListener = matchDb.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.exists()) {
FetchMatchInformation(dataSnapshot.getKey());
activateNotificationsMessages(dataSnapshot.child("ChatId").getValue().toString());
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void activateNotificationsMessages(String key) {
DatabaseReference chatNotificationDb = FirebaseDatabase.getInstance().getReference().child("Chat").child(key).child("Messages");
ChildEventListener valueEventListener = chatNotificationDb.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.exists()){
if(dataSnapshot.child("createdByUser").getValue().toString() != FirebaseAuth.getInstance().getCurrentUser().getUid().toString()) {
String message = dataSnapshot.child("text").getValue().toString();
String userName = dataSnapshot.child("userName").getValue().toString();
NotificationCompat.Builder builder = new NotificationCompat.Builder(getActivity(), CHANNEL_ID)
.setSmallIcon(R.drawable.signup)
.setContentTitle(userName)
.setContentText(message)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManager notificationManager = (NotificationManager) getActivity().getSystemService(getActivity().NOTIFICATION_SERVICE);
notificationManager.notify(0, builder.build());
}
}
LOGCAT: 01-27 22: 59: 54.984 387- 387 / com.example. android .friendzr E / AndroidRuntime: FATAL EXCEPTION: main Process: com.example. android .friendzr, PID: 387 java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .lang.String java .lang.Object.toString () 'для пустой ссылки на объект в com.example. android .friendzr.Matches.MatchesActivity $ 3.onChildAdded (MatchesActivity. java: 225) в com .google. android .gms.internal.px.zza (неизвестный источник) на com.google. android .gms.internal.vj.zzHX (неизвестный источник) на com.google. android .gms.internal .vp.run (неизвестный источник) в android .os.Handler.handleCallback (обработчик. java: 739) в android .os.Handler.dispatchMessage (обработчик. java: 95) в android .os.Looper.l oop (Looper. java: 145) в android .app.ActivityThread.main (ActivityThread. java: 5832) в java. lang.reflect.Method.invoke (собственный метод) в java .lang.reflect.Method.invoke (Method. java: 372) в com. android .internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit . java: 1399) по тел. android .internal.os.ZygoteInit.main (ZygoteInit. java: 1194)