所以我有一个textview,当我的监听器得到一些特定的数据时,我会播放一些字符串。问题是,textview仅在我移动到另一个视图或在后台隐藏应用程序然后将其返回到前面时才更新文本。所以基本上我做了一个textview,然后我有一个基于asmack库(XMPP)的监听器当我收到一个messgae时,我将它附加到textview,但我只能通过移动到另一个视图然后返回来看。
tv = (TextView)findViewById(R.id.textwindow);
chat = xmpp.getChatManager().createChat(contactid, new MessageListener() {
public void processMessage(Chat chat, Message message) {
System.out.println("Reciveved:"+ message);
tv.append("From:"+chat.getParticipant()+"\n"+message.getBody()+"\n");
}
}
);;
答案 0 :(得分:4)
您可以通过在View或其包含的ViewGroup上调用invalidate()方法来强制重绘。因此,在上面的代码中,您可以像这样修改processMessage()方法:
public void processMessage(Chat chat, Message message) {
System.out.println("Reciveved:"+ message);
tv.append("From:"+chat.getParticipant()+"\n"+message.getBody()+"\n");
tv.invalidate();
}
您可能需要查看已解答的相关问题here。