E/AndroidRuntime: FATAL EXCEPTION: Thread-2 Process: com.example.petgrowing, PID: 19678
时间: 2024-03-20 18:42:01 浏览: 237
这个错误通常是由于在非 UI 线程上访问 UI 元素而引发的。在 Android 中,UI 元素只能在主线程上更新,因此如果在非 UI 线程上更新 UI 元素,就会抛出这个异常。
在这个问题的代码中,使用了一个新线程来进行网络请求,然后在该线程中更新了 UI 线程上的 TextView。这样会导致在非 UI 线程上更新 UI 元素,从而引发了该异常。
为了解决这个问题,可以使用 `runOnUiThread` 方法来在 UI 线程上更新 TextView 的内容。具体来说,可以将获取到的数据作为参数传递给 `runOnUiThread` 方法,并在该方法中更新 TextView 的内容,如下所示:
```
new Thread(() -> {
try {
// 进行网络请求,获取数据
Document doc = Jsoup.connect("https://chl.cn/?jinri").get();
Elements tables = doc.getElementsByTag("table");
Element table1 = tables.first();
Elements tds = table1.getElementsByTag("td");
Element td1 = tds.first();
Element td2 = tds.get(4);
final String retStr = ("1:" + td1.text() + " 2:" + td2.text());
// 在 UI 线程上更新 TextView 的内容
runOnUiThread(() -> {
show.setText(retStr);
});
} catch (IOException e) {
e.printStackTrace();
}
}).start();
```
这样就可以在 UI 线程上更新 TextView 的内容,从而避免了在非 UI 线程上访问 UI 元素的问题。
阅读全文