Я инициализирую график в Activity с помощью Kotlin DSL и использую navGraphViewModels() для получения экземпляра vm в onCreate() фрагмента. Однако после смерти процесса приложение вылетает
Caused by: java.lang.IllegalArgumentException: No destination with route main_navigation is on the NavController's back stack. The current destination is null
private val vm: Vm by navGraphViewModels("main_navigation")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
vm.someFunction()
}
Caused by: java.lang.IllegalArgumentException: No destination with route main_navigation is on the NavController's back stack. The current destination is null
at androidx.navigation.NavController.getBackStackEntry(NavController.kt:2472)
at com.example.testingnavigation.MyFragment1$special$$inlined$navGraphViewModels$default$1.invoke(NavGraphViewModelLazy.kt:209)
at com.example.testingnavigation.MyFragment1$special$$inlined$navGraphViewModels$default$1.invoke(NavGraphViewModelLazy.kt:208)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at androidx.navigation.NavGraphViewModelLazyKt.navGraphViewModels$lambda-3(NavGraphViewModelLazy.kt:208)
at androidx.navigation.NavGraphViewModelLazyKt.access$navGraphViewModels$lambda-3(NavGraphViewModelLazy.kt:1)
at com.example.testingnavigation.MyFragment1$special$$inlined$navGraphViewModels$default$4.invoke(NavGraphViewModelLazy.kt:217)
at com.example.testingnavigation.MyFragment1$special$$inlined$navGraphViewModels$default$4.invoke(NavGraphViewModelLazy.kt:214)
at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:47)
at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:35)
at com.example.testingnavigation.MyFragment1.getVm(MyFragment1.kt:26)
at com.example.testingnavigation.MyFragment1.onCreate(MyFragment1.kt:30)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:122)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
at androidx.fragment.app.Fragment.restoreChildFragmentState(Fragment.java:1989)
at androidx.fragment.app.Fragment.onCreate(Fragment.java:1967)
at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.kt:163)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
14:03:56.302 E at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:252)
at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219)
at com.example.testingnavigation.MainActivity.onCreate(MainActivity.kt:17)
at android.app.Activity.performCreate(Activity.java:8119)
at android.app.Activity.performCreate(Activity.java:8103)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1359)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3713)
... 11 more
Шаги по воспроизведению сбоя
Откройте приложение и переведите его в фоновый режим
затем используйте эту команду adbshell am kill
перезапустите приложение из значка приложения.
Не происходит сбоя при прямой настройке навигационного графика в файле макета Activity_main.xml.
Как правильно использовать навигацию через Kotlin DSL?< /п>
Я инициализирую график в Activity с помощью Kotlin DSL и использую navGraphViewModels() для получения экземпляра vm в onCreate() фрагмента. Однако после смерти процесса приложение вылетает [code]Caused by: java.lang.IllegalArgumentException: No destination with route main_navigation is on the NavController's back stack. The current destination is null [/code] MainActivity.kt [code] override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val navController = (supportFragmentManager .findFragmentById(R.id.nav_host_fragment) as NavHostFragment).navController
navController.graph = graph } [/code] MyFragment1.kt [code] private val vm: Vm by navGraphViewModels("main_navigation")
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) vm.someFunction() }
[/code] Stacktrace [code] Caused by: java.lang.IllegalArgumentException: No destination with route main_navigation is on the NavController's back stack. The current destination is null at androidx.navigation.NavController.getBackStackEntry(NavController.kt:2472) at com.example.testingnavigation.MyFragment1$special$$inlined$navGraphViewModels$default$1.invoke(NavGraphViewModelLazy.kt:209) at com.example.testingnavigation.MyFragment1$special$$inlined$navGraphViewModels$default$1.invoke(NavGraphViewModelLazy.kt:208) at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) at androidx.navigation.NavGraphViewModelLazyKt.navGraphViewModels$lambda-3(NavGraphViewModelLazy.kt:208) at androidx.navigation.NavGraphViewModelLazyKt.access$navGraphViewModels$lambda-3(NavGraphViewModelLazy.kt:1) at com.example.testingnavigation.MyFragment1$special$$inlined$navGraphViewModels$default$4.invoke(NavGraphViewModelLazy.kt:217) at com.example.testingnavigation.MyFragment1$special$$inlined$navGraphViewModels$default$4.invoke(NavGraphViewModelLazy.kt:214) at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:47) at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:35) at com.example.testingnavigation.MyFragment1.getVm(MyFragment1.kt:26) at com.example.testingnavigation.MyFragment1.onCreate(MyFragment1.kt:30) at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094) at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:122) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034) at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941) at androidx.fragment.app.Fragment.restoreChildFragmentState(Fragment.java:1989) at androidx.fragment.app.Fragment.onCreate(Fragment.java:1967) at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.kt:163) at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094) at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034) at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941) 14:03:56.302 E at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:252) at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219) at com.example.testingnavigation.MainActivity.onCreate(MainActivity.kt:17) at android.app.Activity.performCreate(Activity.java:8119) at android.app.Activity.performCreate(Activity.java:8103) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1359) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3713) ... 11 more [/code] Шаги по воспроизведению сбоя [list] [*]Откройте приложение и переведите его в фоновый режим [*]затем используйте эту команду adbshell am kill
[*]перезапустите приложение из значка приложения. [/list] Не происходит сбоя при прямой настройке навигационного графика в файле макета Activity_main.xml. Как правильно использовать навигацию через Kotlin DSL?< /п>
Мое приложение Kotlin аварийно завершает работу, когда я меняю фрагменты, позвольте мне объяснить.
В моем приложении есть несколько фрагментов, которые являются моими страницами, в своих фрагментах я ссылаюсь на представление XML с помощью...
Мое приложение Kotlin аварийно завершает работу, когда я меняю фрагменты, позвольте мне объяснить.
В моем приложении есть несколько фрагментов, которые являются моими страницами, в своих фрагментах я ссылаюсь на представление XML с помощью...
при запросе разрешения на начальном этапе мое приложение вылетает, но когда пользователь разрешает разрешение через некоторое время, мое приложение вылетает. Я вызываю эти две функции при инициализации.
Ошибка при сбое...
Я работаю над приложением ASP.NET Core MVC. У меня есть представление с полем загрузки (загрузка фотографии), и когда я нажимаю на него и открываю файл, приложение просто останавливается и нигде не показывает никаких сообщений об ошибках. Что это...
Я работаю над приложением ASP.NET Core MVC. У меня есть представление с полем загрузки (загрузка фотографии), и когда я нажимаю на него и открываю файл, приложение просто останавливается и нигде не показывает никаких сообщений об ошибках. Что это...