报错解释:
android.view.ViewRootImpl$CalledFromWrongThreadException 异常表明你尝试在非UI(或主)线程上访问或者修改UI元素。在Android应用中,仅允许UI线程,也就是主线程更新应用的用户界面。试图在其他线程直接操作UI会引发这个异常。

解决方法:
要解决这个问题,你需要确保所有的UI操作都在主线程上执行。可以使用如下方法:
1、如果你正在运行的代码是作为异步任务(如后台线程)运行的,你可以使用runOnUiThread()方法将你的UI更新代码传递回UI线程。例如:

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        // 这里放置所有的UI更新代码
    }
});

2、另一种方法是使用Handler来切换到UI线程。在你的Activity中创建一个Handler,并在需要的地方通过这个Handler发送消息。例如:

// 在Activity中
Handler mainHandler = new Handler(Looper.getMainLooper());
 
// 在需要更新UI的地方
mainHandler.post(new Runnable() {
    @Override
    public void run() {
        // 这里放置所有的UI更新代码
    }
});

更多推荐