I have a screen with Jetpack Compose that has a BottomNavigation and a NavHost.
At certain point, I return a certain value to that screen and its effect must be that it should navigate to one of the tabs.
If I just use navController.navigate(destination) then I have the following error:
2022-09-19 13:14:56.577 30826-30826/com.flingtheapp E/AndroidRuntime: FATAL EXCEPTION: main Process: com.flingtheapp, PID: 30826 java.lang.NullPointerException at androidx.navigation.NavController.navigate(NavController.kt:1652) at androidx.navigation.NavController.navigate(NavController.kt:1984) at androidx.navigation.NavController.navigate$default(NavController.kt:1979) at tech.atlabs.fling.android.core.MainScreenKt.MainScreen(MainScreen.kt:70) at tech.atlabs.fling.android.ComposableSingletons$AppActivityKt$lambda-1$1$1$6.invoke(AppActivity.kt:66) at tech.atlabs.fling.android.ComposableSingletons$AppActivityKt$lambda-1$1$1$6.invoke(AppActivity.kt:65) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:163) at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:162) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84) at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:60) at androidx.navigation.compose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1) at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52) at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47) at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:162) at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:141) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.animation.CrossfadeKt$Crossfade$4$1.invoke(Crossfade.kt:115) at androidx.compose.animation.CrossfadeKt$Crossfade$4$1.invoke(Crossfade.kt:110) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:124) at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:55) at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:141) at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:13) at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:10) at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:145) at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2363) at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2630) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3217) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3195) at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:336) at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source:1) at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3195) 2022-09-19 13:14:56.577 30826-30826/com.flingtheapp E/AndroidRuntime: at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:3160) at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:748) at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:876) at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:107) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:485) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:454) at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34) at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109) at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41) at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:997) at android.view.Choreographer.doCallbacks(Choreographer.java:797) at android.view.Choreographer.doFrame(Choreographer.java:728) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:984) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:8154) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@56fece1, androidx.compose.ui.platform.MotionDurationScaleImpl@1da9a06, StandaloneCoroutine{Cancelling}@ba598c7, AndroidUiDispatcher@af8def4] 2022-09-19 13:14:56.621 30826-30826/com.flingtheapp I/Process: Sending signal. PID: 30826 SIG: 9 2022-09-19 13:14:58.738 31683-31683/? E/Zygote: isWhitelistProcess - Process is Whitelisted 2022-09-19 13:14:58.738 31683-31683/? E/Zygote: accessInfo : 1 2022-09-19 13:14:58.742 31683-31683/? I/com.flingtheap: Late-enabling -Xcheck:jni 2022-09-19 13:14:58.764 31683-31683/? E/com.flingtheap: Unknown bits set in runtime_flags: 0x8000 2022-09-19 13:14:58.773 31683-31683/? D/ActivityThread: setConscryptValidator 2022-09-19 13:14:58.773 31683-31683/? D/ActivityThread: setConscryptValidator - put 2022-09-19 13:15:02.809 31683-31683/com.flingtheapp I/FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT] 2022-09-19 13:15:02.922 31683-31683/com.flingtheapp I/FirebaseInitProvider: FirebaseApp initialization successful 2022-09-19 13:15:03.000 31683-31683/com.flingtheapp I/[Koin]: [init] declare Android Context 2022-09-19 13:15:03.092 31683-31683/com.flingtheapp I/[Koin]: loaded 31 definitions - 1.26177 ms 2022-09-19 13:15:03.092 31683-31683/com.flingtheapp I/[Koin]: create eager instances ... 2022-09-19 13:15:08.308 31683-31722/com.flingtheapp D/ProfileInstaller: Installing profile for com.flingtheapp
So I guess that this is not the correct way to do it.
How can I programmatically navigate using NavController?