NullPointerException: значение null не может быть приведено к ненулевому типу kotlin.Int. При вызове navController.setGraph после перезапуска Activity

Иногда функция setGraph вызывает исключение NullPointerException: значение null не может быть приведено к ненулевому типу kotlin.Int. Это зависит от того, как я перезапущу приложение.

Когда создается MainActivity, он программно устанавливает график и начальный пункт назначения. По сути, он решает, вошел ли пользователь в систему или нет. Если вы вошли в систему, он попадает в HomeFragment. Если нет, отображается LoginFragment.

Вот моя функция, которая устанавливает график и начальный пункт назначения:

      private fun openLogin(navGraph: NavGraph, navigateToChatAutomatically: Boolean) {
        navGraph.setStartDestination(R.id.login_nav_graph)

        try {
            navController.setGraph(
                navGraph,
                bundleOf(
                    "pageCount" to 3,
                    "navigateToChatAutomatically" to navigateToChatAutomatically
                )
            )
        }catch (t: Throwable){
            //exception java.lang.NullPointerException: null cannot be cast to non-null type kotlin.Int
        }
       
    }

Когда я перезапускаю активность таким образом, активность перезапускается, и пользователь получает исключение NullPointerException, когда внутри вызывается setGraphopenLoginфункция.

      fun FragmentActivity.restart(){
    val intent = this.intent
    finish()
    startActivity(intent)
}

Я не знаю точной причины возникновения исключения при перезапуске действия. Я нашел только рабочее решение (см. ответ ниже). Если кто-нибудь знает, почему это происходит или, может быть, есть лучшее решение, пожалуйста, дайте мне знать.

1 ответ

Когда я перезапускаю приложение с нуля, перезапустив его процесс, приложение перезапускается иsetGraphработает хорошо, без каких-либо исключений.

      fun FragmentActivity.rebirth(){
    ProcessPhoenix.triggerRebirth(this)
}

И это библиотека, которую я использую для перезапуска процесса:

      implementation("com.jakewharton:process-phoenix:2.1.2")
Другие вопросы по тегам