在Android中,只有主线程才能更新UI,当在非主线程中尝试更新UI时会出现"android.view.ViewRootImpl$CalledFromWrongThreadException"异常。\n\n对于你的问题,可能是在非主线程中尝试更新RecyclerView的适配器导致的。解决方法是在主线程中更新RecyclerView的适配器。\n\n在Kotlin中,你可以使用"runOnUiThread"方法来在主线程中执行代码。修改你的代码如下:\n\nkotlin\nactivity\?runOnUiThread {\n banner.setAdapter(adapter)\n}\n\n\n通过"activity?runOnUiThread",你可以确保在主线程中更新RecyclerView的适配器。\n\n另外,你还可以使用"Handler"来在主线程中更新UI。在你的Fragment中定义一个"Handler",并在"handleMessage"方法中更新RecyclerView的适配器。然后在非主线程中使用"Handler.sendMessage"方法发送消息,以触发主线程中的"handleMessage"方法。代码示例如下:\n\nkotlin\nval handler = Handler(Looper.getMainLooper()) { message ->\n if (message.what == 1) {\n banner.setAdapter(adapter)\n }\n true\n}\n\n// 在非主线程中发送消息\nhandler.sendMessage(handler.obtainMessage(1))\n\n\n通过使用"Handler",你可以将消息发送到主线程,并在主线程中更新RecyclerView的适配器。\n\n这些解决方法可以帮助你在Kotlin中解决"android.view.ViewRootImpl$CalledFromWrongThreadException"异常。


原文地址: https://www.cveoy.top/t/topic/pUVc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录