我有一些工作线程使用地理编码器获取地址,完成后,我想在应用程序线程的 TextView 上显示结果,使用工作线程中的 setText() 会导致异常,那么最佳实践是什么去做?
问问题
747 次
3 回答
1
在要设置文本的线程中尝试此操作:
// you should finalize your text before using it in another thread,
// else the IDE would show an error
final String text = yourTextToBeSet;
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(text);
}
});
在非 UI 线程上调用 setText() 时遇到的异常是因为在非 UI 线程上时无法调用与 UI 相关的任何内容。如上所述,您可以轻松调用 runOnUiThread(Runnable) 来转移 UI 线程上的代码执行。
请记住,如果您的代码没有那么简单,则此解决方案还不够好,在这种情况下,建议使用AsyncTask。
于 2012-09-09T19:11:05.787 回答
1
Android UI 视图不能被外部线程触及,任何调用视图方法的代码都只能在 UI 线程中运行。你应该使用AsyncTask。它提供了有用的回调方法来从在单独线程中运行的任务更新 UI。
于 2012-09-09T19:13:15.380 回答
1
如果不查看您的代码或不知道什么异常,很难说:
但检查是否:
- 您的 textView 对象与布局中的对象链接(findViewById(R.id.textView1))
- 它在你的布局中可见吗?(有时当元素的尺寸不相加时,视图被推离屏幕)
- 它真的是您要设置的字符串吗?(不是 int 左右?)
于 2012-09-09T19:24:18.797 回答