java.lang.NullPointerException: 无法为 child() 中的参数 'pathString' 传递 null 此错误显示

java.lang.NullPointerException: Can't pass null for argument 'pathString' in child() this error is showing

我遇到了这个错误,每次说完这样的话应用程序都会崩溃

java.lang.NullPointerException: Can't pass null for argument 'pathString' in child() and

我的消息适配器看起来像这样 我在 .child(senderRoom) 行中收到错误应用程序正在崩溃

public class MessagesAdapter extends RecyclerView.Adapter {


    Context context;
    ArrayList<Message> messages;

    final int ITEM_SENT = 1;
    final int ITEM_RECEIVE = 2;

    String senderRoom;
    String receiverRoom;

    public MessagesAdapter(Context context, ArrayList<Message> messages, String senderRoom, String receiverRoom) {
        this.context = context;
        this.messages = messages;
        this.senderRoom = senderRoom;
        this.receiverRoom = receiverRoom;
    }



    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType==ITEM_SENT)
        {
            View view = LayoutInflater.from(context).inflate(R.layout.item_send, parent, false);
            return new SentViewHolder(view);
        }else
        {
            View view = LayoutInflater.from(context).inflate(R.layout.item_receive, parent, false);
            return new ReceiverViewHolder(view);
        }
    }

    @Override
    public int getItemViewType(int position) {
        Message message = messages.get(position);
        if (FirebaseAuth.getInstance().getUid().equals(message.getSenderId()))
        {
            return ITEM_SENT;
        }else {
            return ITEM_RECEIVE;
        }
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {

        Message message = messages.get(position);

        int [] reactions = new int[]{
                R.drawable.ic_fb_like,
                R.drawable.ic_fb_love,
                R.drawable.ic_fb_laugh,
                R.drawable.ic_fb_wow,
                R.drawable.ic_fb_sad,
                R.drawable.ic_fb_angry
        };
        ReactionsConfig config = new ReactionsConfigBuilder(context)
                .withReactions(reactions)
                .build();

        ReactionPopup popup = new ReactionPopup(context, config, (pos) -> {
            if (holder.getClass() == SentViewHolder.class)
            {
                SentViewHolder viewHolder = (SentViewHolder) holder;
                viewHolder.binding.feeling.setImageResource(reactions[pos]);
                viewHolder.binding.feeling.setVisibility(View.VISIBLE);
            }else
            {
                ReceiverViewHolder viewHolder = (ReceiverViewHolder) holder;
                viewHolder.binding.feeling.setImageResource(reactions[pos]);
                viewHolder.binding.feeling.setVisibility(View.VISIBLE);

            }

            message.setFeeling(pos);

            FirebaseDatabase.getInstance().getReference()
                    .child("chats")
                    .child(senderRoom)
                    .child("messages")
                    .child(message.getMessageId()).setValue(message);

            FirebaseDatabase.getInstance().getReference()
                    .child("chats")
                    .child(receiverRoom)
                    .child("messages")
                    .child(message.getMessageId()).setValue(message);

            return true; // true is closing popup, false is requesting a new selection
        });

        if (holder.getClass() == SentViewHolder.class)
        {
            SentViewHolder viewHolder = (SentViewHolder) holder;
            viewHolder.binding.message.setText(message.getMessage());

            if (message.getFeeling() >= 0)
            {
                //message.setFeeling(reactions[message.getFeeling()]);
                viewHolder.binding.feeling.setImageResource(reactions[message.getFeeling()]);

                viewHolder.binding.feeling.setVisibility(View.VISIBLE);
            }else {
                viewHolder.binding.feeling.setVisibility(View.GONE);

            }

            viewHolder.binding.message.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {
                    popup.onTouch(view, motionEvent);
                    return false;
                }
            });
        }else {
            ReceiverViewHolder viewHolder = (ReceiverViewHolder) holder;
            viewHolder.binding.message.setText(message.getMessage());


            if (message.getFeeling() >= 0)
            {
                //message.setFeeling(reactions[(int)message.getFeeling()]);
                viewHolder.binding.feeling.setImageResource(reactions[message.getFeeling()]);
                viewHolder.binding.feeling.setVisibility(View.VISIBLE);
            }else {
                viewHolder.binding.feeling.setVisibility(View.GONE);

            }

            viewHolder.binding.message.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {
                    popup.onTouch(view, motionEvent);
                    return false;
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return messages.size();
    }

    public class SentViewHolder extends RecyclerView.ViewHolder
    {

        ItemSendBinding binding;
        public SentViewHolder(@NonNull View itemView) {
            super(itemView);
            binding = ItemSendBinding.bind(itemView);
        }
    }

    public class ReceiverViewHolder extends RecyclerView.ViewHolder
    {

        ItemReceiveBinding binding;
        public ReceiverViewHolder(@NonNull View itemView) {
            super(itemView);
            binding = ItemReceiveBinding.bind(itemView);
        }
    }}

我的 JSON lOOKS 文件看起来像这样

    {"chats" : {
    "3GJBWzyjbVfAJQkhMIFzrr2KG2L23GJBWzyjbVfAJQkhMIFzrr2KG2L2" : {
      "messages" : {
        "-MsfcZFGlN1moVhnY9eJ" : {
          "feeling" : -1,
          "message" : "hey",
          "senderId" : "3GJBWzyjbVfAJQkhMIFzrr2KG2L2",
          "timeStamp" : 0
        }
      }
    },
    "3GJBWzyjbVfAJQkhMIFzrr2KG2L27JyFKNV0k6e4cwM8zNOb1coANfg1" : {
      "messages" : {
        "-MsfatS61jbf5ZPZIcPi" : {
          "feeling" : -1,
          "message" : "om swami",
          "senderId" : "3GJBWzyjbVfAJQkhMIFzrr2KG2L2",
          "timeStamp" : 0
        }
      }
    },
    "7JyFKNV0k6e4cwM8zNOb1coANfg13GJBWzyjbVfAJQkhMIFzrr2KG2L2" : {
      "messages" : {
        "-MsfatS61jbf5ZPZIcPi" : {
          "feeling" : -1,
          "message" : "om swami",
          "senderId" : "3GJBWzyjbVfAJQkhMIFzrr2KG2L2",
          "timeStamp" : 0
        }
      }
    }
  }

请查看代码并帮助我解决这个问题。 谢谢

调用child()方法时显然发生错误:

FirebaseDatabase.getInstance().getReference().child(...)

检查您传递给此方法的所有那些调用和参数。从你的代码中我看到你正在传递 senderRoomreceiverRoommessage.getMessageId(),其中一些参数可以是 null。您可以在调用 child() 方法之前添加一些检查,例如:

if (senderRoom != null && message.getMessageId() != null) {
    FirebaseDatabase.getInstance().getReference()
                .child("chats")
                .child(senderRoom)
                .child("messages")
                .child(message.getMessageId()).setValue(message);
}