art*_*ros 2 java android textview
我有一个textview,其中我以两种方式附加文本:第一种方式:通过单击按钮并获取EditText中的内容.
sendbutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
txview.append("Text: "+txedit.getText()+"\n");
txedit.setText("");
}
});
Run Code Online (Sandbox Code Playgroud)
这工作正常,当我点击按钮textview用新文本更新视图.
但
第二种方式,我听xmpp监听器(asmack库)和接收消息我将它追加到textView.
chat = xmpp.getChatManager().createChat(contactid[1], new MessageListener() {
public void processMessage(Chat chat, Message message) {
try {
chat.sendMessage(message.getBody());
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} txview.append("Text"+message.getFrom()+"\n"+message.getBody()+"\n"); } }
);;
Run Code Online (Sandbox Code Playgroud)
问题是,我收到消息,我肯定知道它(因为我用chat.sendMessage(message.getBody());)重新发送给用户,但是 textview只在我更改视图或获取应用程序之后显示我的消息背景(单击主页按钮),然后将其恢复到前面.
我试图 在每个视图上调用invalidate(),根本不起作用.
是做任何解决方案或其他方式做我正在做的事情?
您可以通过以下技巧实现在GUI线程上的发布.将您的上下文(活动或服务)传递给您的听众.内部倾听者:
Handler h = new Handler(context.getMainLooper());
h.post(new Runnable() {
@Override
public void run() {
txview.append("Text"+message.getFrom()+"\n"+message.getBody()+"\n");
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20152 次 |
| 最近记录: |