我有这种情况,其中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);
}
答案 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");
或者在收到消息中设置文本后,在下一次设置接收消息中的文本之前阅读输出。