[GH] Fix regression in dynamic labels with non-string typed arguments

Regression introduced in https://github.com/androidx/androidx/commit/76f9009e6cfc1cba5314cad87a6f1923203c54fa Reported in https://issuetracker.google.com/issues/316676794

Test: ./gradlew navigation:navigation-ui:cC
Fixes: 316676794

[AndroidX Navigation 2.6.0 broke dynamic app bar title for non String arguments](https://issuetracker.google.com/issues/316676794)

This is an imported pull request from https://github.com/androidx/androidx/pull/636.

Resolves #636
Github-Pr-Head-Sha: f455c6d1e641cc72cc1bd371b1f47b7d87ec8eff
GitOrigin-RevId: 3ad8f763f17acb22678f1a87e183ef4e7dac5a9d
Change-Id: I94b4e28bb847632663be32b11e481d13789e8c1b
diff --git a/navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt b/navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt
index e23ffae..0bdc6e1 100644
--- a/navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt
+++ b/navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt
@@ -635,7 +635,8 @@
                     val value = context.getString(bundle.getInt(argName))
                     builder.append(value)
                 } else {
-                    builder.append(bundle.getString(argName))
+                    @Suppress("DEPRECATION")
+                    builder.append(bundle[argName].toString())
                 }
             } else {
                 throw IllegalArgumentException(
diff --git a/navigation/navigation-ui/src/androidTest/java/androidx/navigation/ui/NavigationUITest.kt b/navigation/navigation-ui/src/androidTest/java/androidx/navigation/ui/NavigationUITest.kt
index 992ee49..77714ce 100644
--- a/navigation/navigation-ui/src/androidTest/java/androidx/navigation/ui/NavigationUITest.kt
+++ b/navigation/navigation-ui/src/androidTest/java/androidx/navigation/ui/NavigationUITest.kt
@@ -193,6 +193,33 @@
         assertThat(toolbar.title.toString()).isEqualTo(labelString)
     }
 
+    @UiThreadTest
+    @Test
+    fun navigateWithNonStringArg() {
+        val context = ApplicationProvider.getApplicationContext<Context>()
+        val navController = NavHostController(context)
+        navController.navigatorProvider.addNavigator(TestNavigator())
+
+        val startDestination = "start_destination"
+        val endDestination = "end_destination"
+
+        navController.graph = navController.createGraph(startDestination = startDestination) {
+            test(startDestination)
+            test("$endDestination/{test}") {
+                label = "{test}"
+                argument(name = "test") {
+                    type = NavType.LongType
+                }
+            }
+        }
+
+        val toolbar = Toolbar(context).apply { setupWithNavController(navController) }
+        navController.navigate("$endDestination/123")
+
+        val expected = "123"
+        assertThat(toolbar.title.toString()).isEqualTo(expected)
+    }
+
     private fun createToolbarOnDestinationChangedListener(
         toolbar: Toolbar,
         bundle: Bundle?,