Переключение вкладок BottomNavigationView приводит к сбою E / AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher - PullRequest
0 голосов
/ 25 января 2019

У меня есть BottomNavigationView с несколькими вкладками. Каждая вкладка содержит фрагмент. При выборе фрагмента, который вызывает Json из Интернета, и быстрого переключения на другую вкладку, приложение вылетает.

E / AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: OkHttp Dispatcher

Вот мой код:

fun fetchJson(theRecycler: RecyclerView) {
    val request = Request.Builder().url("someUrl").build()
    val client = OkHttpClient()
    client.newCall(request).enqueue(object : Callback {
        override fun onResponse(call: Call?, response: Response?) {
            val body = response?.body()?.string()
            val gson = GsonBuilder().create()
            val myFeed = gson.fromJson(body, WebFragment::class.java)

            activity!!.runOnUiThread{
                theRecycler.adapter = WebAdapter(myFeed.items)
            }
        }
        override fun onFailure(call: Call?, e: IOException?) {
                println("Failed to execute request")
        }
    })
}

Ошибка, кажется, происходит в этой строке:

            activity!!.runOnUiThread{
                theRecycler.adapter = WebAdapter(myFeed.items)
            }

Я думаю, что мне нужно остановить этот процесс onStop(), но я не уверен, как мне поступить, чтобы сделать это.

2019-01-24 22: 25: 49,390 22261-22510 / com.app E / AndroidRuntime: Неустранимое исключение: OkHttp Dispatcher Процесс: com.app, PID: 22261 kotlin.KotlinNullPointerException на com.app.UI.Navigation.HomeFeed.NewsFeed $ fetchJson $ 1.onResponse (HomeFeed.kt: 45) на okhttp3.RealCall $ AsyncCall.execute (RealCall.java:153) на okhttp3.internal.NamedRunnable.run (NamedRunnable.java:32) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:764)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...