Мое приложение вылетает из-за вызова функции (activNotificationsMessages) - PullRequest
0 голосов
/ 27 января 2020

Сначала я вызываю 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)

1 Ответ

0 голосов
/ 28 января 2020

внимательно проверьте эту часть

dataSnapshot.child("ChatId").getValue().toString()

Вы уверены, что что-то получаете здесь:

    dataSnapshot.child("ChatId")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...