android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
时间: 2023-11-18 16:51:15 浏览: 171
问题:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original
这个异常是因为在非UI线程中尝试修改UI界面,而只有UI线程可以操作或修改视图。为了解决这个问题,你可以使用以下方法之一:
1. 使用Handler或者主线程的runOnUiThread()方法来处理UI操作。例如:
```java
runOnUiThread(new Runnable() {
@Override
public void run() {
// 在此处进行UI操作
}
});
```
2. 使用AsyncTask来执行后台任务并在onPostExecute()方法中更新UI。例如:
```java
private class MyTask extends AsyncTask<Void, Void, Void> {
// 后台任务在这里执行
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// 在此处更新UI
}
}
```
3. 使用HandlerThread或者其他线程来执行后台任务,并使用Handler将结果传递回UI线程。例如:
```java
Handler handler = new Handler(Looper.getMainLooper());
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// 后台任务在这里执行
handler.post(new Runnable() {
@Override
public void run() {
// 在此处更新UI
}
});
}
});
thread.start();
```
通过这些方法,你可以确保在正确的线程上进行UI操作,避免出现`CalledFromWrongThreadException`异常。
阅读全文