🚀

URLEncodeでJetpack ComposeのNavigationでURLを引数に渡すときに出るエラーを解決する

2022/04/30に公開

発生したエラー

Jetpack ComposeでNavigationの実装をしており、画面遷移のタイミングで次の画面にURLを渡した買ったのですが、普通にURLを引数に渡すとこんな感じのエラーが出ました。

java.lang.IllegalArgumentException: Navigation destination that matches request NavDeepLinkRequest{ uri=https://hello...... } cannot be found in the navigation graph NavGraph(0x0) startDestination={Destination(0x142feed7) route=demo}

該当のコード

navController.navigate(AppScreen.WebViewScreen.route + "/https://hello....")

今回はこれを解決します。

解決方法

この問題を解決するには、以下の記述をする必要がありました。

val url = URLEncoder.encode(content.url, StandardCharsets.UTF_8.toString())
.....
navController.navigate(AppScreen.WebViewScreen.route + "/$url")

URLを渡すときにそのままURLを渡すのではなく、エンコードして渡すとエラーが解消できました。

URLにURLを渡す必要がある場合はそれをエンコードする必要があるので今回はこれで解決です!

参考

https://stackoverflow.com/questions/68950770/passing-url-as-a-parameter-to-jetpack-compose-navigation

Discussion