https://kotlinlang.org logo
#compose
Title
# compose
j

Jeisson Sáchica

11/25/2020, 8:34 PM
Hi guys! One questions relating compose navigation. Is there a special way to navigate to a nested
navigation
defined in the
NavHost
? I am currently getting an error stating the the NavDeepLink cannot be found when navigating from a
composable
This is the reproduction:
Copy code
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            NestedNavCrashReproductionTheme {
                val navController = rememberNavController()
                NavHost(navController = navController, startDestination = "MainScreen1") {

                    composable("MainScreen1") {
                        MainScreen1 {
                            navController.navigate("Nested")
                        }
                    }

                    navigation(startDestination = "ChildScreen1", route = "Nested") {
                        composable("ChildScreen1") {
                            ChildScreen1()
                        }
                    }
                }
            }
        }
    }
}
When I change the NavHost's startDestirnation to "Nested" It inits correctly to the ChildScreen1. But when navigating from a button click callback from the MainScreen1 it fails with this error:
Copy code
2020-11-25 15:33:08.521 4650-4650/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.nestednavcrashreproduction, PID: 4650
    java.lang.IllegalArgumentException: Navigation destination that matches request NavDeepLinkRequest{ uri=<android-app://androidx.navigation.compose/Nested> } cannot be found in the navigation graph NavGraph(0x0) startDestination={Destination(0x564b5523)}
        at androidx.navigation.NavController.navigate(NavController.java:1031)
        at androidx.navigation.NavController.navigate(NavController.java:1008)
        at androidx.navigation.compose.NavHostControllerKt.navigate(NavHostController.kt:107)
        at androidx.navigation.compose.NavHostControllerKt.navigate$default(NavHostController.kt:106)
        at com.example.nestednavcrashreproduction.MainActivity$onCreate$1$1$1$1$1.invoke(MainActivity.kt:27)
        at com.example.nestednavcrashreproduction.MainActivity$onCreate$1$1$1$1$1.invoke(Unknown Source:0)
        at androidx.compose.foundation.ClickableKt$clickable$3$tap$1.invoke(Clickable.kt:86)
        at androidx.compose.foundation.ClickableKt$clickable$3$tap$1.invoke(Unknown Source:7)
        at androidx.compose.ui.gesture.TapGestureFilter.onPointerEvent-d1fqKvQ(TapGestureFilter.kt:127)
        at androidx.compose.ui.input.pointer.Node.dispatchToPointerInputFilter(HitPathTracker.kt:535)
        at androidx.compose.ui.input.pointer.Node.dispatchChanges(HitPathTracker.kt:435)
        at androidx.compose.ui.input.pointer.Node.dispatchChanges(HitPathTracker.kt:431)
        at androidx.compose.ui.input.pointer.Node.dispatchChanges(HitPathTracker.kt:431)
        at androidx.compose.ui.input.pointer.NodeParent.dispatchChanges(HitPathTracker.kt:285)
        at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:132)
        at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-EhkylT0(PointerInputEventProcessor.kt:72)
        at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.kt:677)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3172)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2857)
        at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:615)
        at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1879)
        at android.app.Activity.dispatchTouchEvent(Activity.java:3441)
        at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
        at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:577)
        at android.view.View.dispatchPointerEvent(View.java:12880)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5863)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5658)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5151)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5204)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5170)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5307)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5178)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5364)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5151)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5204)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5170)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5178)
2020-11-25 15:33:08.522 4650-4650/? E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5151)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7981)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7921)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7882)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8092)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:198)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:325)
        at android.os.Looper.loop(Looper.java:142)
        at android.app.ActivityThread.main(ActivityThread.java:7000)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Looking thorugh the issue tracker, looks like it had been reported and already fixed! Available on next release 1.0.0-alpha03. https://issuetracker.google.com/issues/173647694
24 Views