问题描述
|
因此,我有一个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\");
}
}
);;
解决方法
您可以通过在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();
}
您可能想看看这里回答的一个相关问题。