我是Kotlin的新手,我有第一个登录活动,第二个活动有回收视图。 recicle视图的数据来自http3方法。对不起,我的英语不好。当我有代码404时,如何显示dialogPopUp,并在之前的一次登录活动中返回?
如果您使用enqueue并且显示对话框是一个UI任务,则需要在UI线程上运行Okhttp回调在后台线程上执行。
在您的情况下,您可以通过使用runOnUiThread
运行对话框代码轻松完成此操作。
runOnUiThread {
dialogPopUp("Error parameters", mContext ).showDialog()
}
正如你在其他区块中所做的那样。您还可以使用在UI线程上创建的Handler来实现此目的。
更新:仔细看看你的代码,我意识到你通过使用fetchJson
函数在后台线程中运行doAsync
。当您在enqueue
上使用OkHttp.Call
时,您基本上将其发送到后台线程上执行,因此无需使用doAsync
。如果删除doAsync
,则不再需要使用runOnUiThread
,因为回调将在UI线程上执行。
Can't create handler inside thread that has not called Looper.prepare()
这基本上意味着在调用此代码时需要使用UI线程。需要使用UI线程来显示对话框。
你可以做:
runOnUiThread {
dialogPopUp("Error parameters", mContext ).showDialog()
}