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")