读取输出失败只读取最后一个输出

时间:2018-03-09 14:45:12

标签: java android arraylist chatbot

我有这种情况,其中chabot可以回复三次,但只有他能读的唯一回复才是最后一次。有没有办法阅读这三条消息?

 private void receiveMessage(String sendText) {

    Bitmap picture = BitmapFactory.decodeResource(getResources(), R.drawable.face_2);
    smusic = MediaPlayer.create(this, R.raw.what);

    //Receive message
    final Message receivedMessage = new Message.Builder()
            .setUser(mUsers.get(1))
            .setRight(false)
            .hideIcon(true)
            .setText(ChatBot.INSTANCE.talk(mUsers.get(0).getName(), sendText))
    .build();


    if (sendText.equals("1")|| sendText.equals("2")){
        int [] rcv = new int[1];
        for (int i =0; i<rcv.length;i++) {
            receivedMessage.setText("What? ");
            receivedMessage.setText("1 What is it?");
            receivedMessage.setText("2 Oh hey Mach!");
            smusic.start();
        }
    }
if (mReplyDelay < 0) {
        mReplyDelay = (new Random().nextInt(3) + 1) * 1000;
    }
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            mChatView.receive(receivedMessage);
            //Add message list
            mMessageList.add(receivedMessage);

        }
    }, mReplyDelay);
}

1 个答案:

答案 0 :(得分:0)

实际上你正在覆盖receivedMessage。 执行此操作时,它将覆盖并且仅设置和发送最后一条消息。

for (int i =0; i<rcv.length;i++) {
    receivedMessage.setText("What? ");
    receivedMessage.setText("1 What is it?");
    receivedMessage.setText("2 Oh hey Mach!");
    smusic.start();
}

因此,如果您想要所有3条消息,而不是执行上述步骤,则可以在\ n分隔的字符串中追加,并在receivedMessage中设置文本。

以\ n

分隔的字符串追加
String.join("\n", "text");

或者在收到消息中设置文本后,在下一次设置接收消息中的文本之前阅读输出。