所以,我有一个代码:
((Button) findViewById(R.id.run)).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
progDialog = ProgressDialog.show(WaggActivity.this,
"", "Loading...", true, true);
new Thread(new Runnable() {
public void run() {
try {
urlTxt.setText(findUrl(String.valueOf(search.getText())));
} catch (Exception e) {
Log.e("MainActivity", e.getMessage());
}
progDialog.dismiss();
}
}).start();
我找不到错误。 :( 错误是:只有创建了视图层次结构的原始线程才能触及它的视图。
答案 0 :(得分:1)
在Android中,您有一个UI-Thread,其中由您的活动创建。这是您可以修改视图的唯一线程,在您的情况下是ProgressDialog。
所以你不能从其他线程修改它,你必须从你的Ui线程中调用它。
您应致电:Activity.runOnUiThread(Runnable)
;
正如here.
答案 1 :(得分:0)
错误消息是否安静?只有主线程可以访问View
。
您正在另一个自定义主题中访问urlTxt
。
要解决此问题,请使用以下代码段
urlTxt.post(new Runnable() {
public void run() {
urlTxt.setText(findUrl(String.valueOf(search.getText())));
}
});