所以我有一个 TextView ,当我的监听器获取一些特定数据时,我在其中 tv.append 一些字符串。问题是,只有当我移动到另一个 View 或在后台隐藏应用程序然后将其返回到前面时, TextView 才会更新文本。所以基本上我做了一个 TextView ,然后我有一个基于asmack库(XMPP)的监听器当我收到消息时我将它附加到 TextView ,但我只能通过移动到另一个 View 并返回来看到它。
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();
}
您可能想查看已回答的相关问题 here 。
关于java - Android TextView 不更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6139997/