#android #android-activity #kotlin #dialog
#Android #android-активность #kotlin #диалоговое
Вопрос:
Я новичок в Kotlin, у меня есть первое действие с логином, а второе действие с представлением повторного использования. Данные для просмотра recicle берутся из метода http3. Извините за мой плохой английский. Как я могу показать диалоговое окно, когда у меня есть код 404, и вернуться к предыдущему действию входа в систему?
Ответ №1:
Обратные вызовы OkHttp выполняются в фоновом потоке, если вы используете enqueue, и отображение диалогового окна является задачей пользовательского интерфейса, поэтому его необходимо запускать в потоке пользовательского интерфейса.
В вашем случае вы можете легко сделать это, запустив свой диалоговый код с помощью runOnUiThread
.
runOnUiThread {
dialogPopUp("Error parameters", mContext ).showDialog()
}
Точно так же, как вы сделали в своем блоке else.
Вы также можете достичь этого с помощью обработчика, который был создан в потоке пользовательского интерфейса.
Обновление: При более внимательном рассмотрении вашего кода я понял, что вы работаете fetchJson
в фоновом потоке с помощью doAsync
функции. Когда вы используете enqueue
на OkHttp.Call
, вы в основном отправляете его для выполнения в фоновом потоке, поэтому нет необходимости использовать doAsync
. Если вы удалите, doAsync
вам больше не нужно использовать runOnUiThread
, поскольку обратный вызов будет выполнен в потоке пользовательского интерфейса.
Ответ №2:
Can't create handler inside thread that has not called Looper.prepare()
По сути, это означает, что вам нужно использовать поток пользовательского интерфейса при вызове этого кода. Для отображения вашего диалога необходимо будет использовать поток пользовательского интерфейса.
Вы можете сделать:
runOnUiThread {
dialogPopUp("Error parameters", mContext ).showDialog()
}