Fri*_*ave 3 java android textview
我有一个使用可运行对象更新文本视图的线程:
// runnable to allow updating the UI from the thread
Runnable updateTextView = new Runnable() {
public void run() {
mTextView.setText(mDisplayedText);
mTextView.invalidate();
}
};
Run Code Online (Sandbox Code Playgroud)
但是,文本无法正确更新。它适用于前几次写入,然后只写入一半文本,将前一个文本的后半部分保留在那里。
转动屏幕会使其刷新并正确绘制。
文本视图是多行的,我向其中写入一个字符串,其中包含 \n 字符作为行尾。
上面的 invalidate 调用没有什么区别。
有任何想法吗?
更新: mDisplayedText 在活动中声明,其中也包含我的线程类。在线程运行循环中,我调用:
mDisplayedText = getText()
runOnUiThread(updateTextView);
Run Code Online (Sandbox Code Playgroud)
该循环包含 100 毫秒的睡眠时间,但它仅在文本发生更改时才写入文本,因此实际上每秒不到一次
回答:
这有点尴尬。问题出在其他代码中。
我正在将 UDP 套接字接收到同一个数据包中,并将 packet.getData 读取到一个新字符串中。这是将整个数据包复制到字符串中,而不仅仅是该消息中收到的字节。第二个问题是我每次都需要调用 packet.setLength 来设置整个数据包可用的长度。
感谢您的回答!
你只能在 UI 线程上更新你的 UI,把你的 setText() 方法放在这个里面
runOnUiThread(new Runnable() {
@Override
public void run() {
btn.setText(someValue);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3925 次 |
| 最近记录: |