@@ -64,10 +64,12 @@ import androidx.navigation.NavHostController
64
64
import androidx.navigation.compose.NavHost
65
65
import androidx.navigation.compose.composable
66
66
import androidx.navigation.compose.rememberNavController
67
+ import androidx.navigation.toRoute
67
68
import androidx.recyclerview.widget.DividerItemDecoration
68
69
import androidx.recyclerview.widget.LinearLayoutManager
69
70
import androidx.recyclerview.widget.RecyclerView
70
71
import kotlinx.coroutines.launch
72
+ import kotlinx.serialization.Serializable
71
73
72
74
class RVActivity : ComponentActivity () {
73
75
private lateinit var composeView: ComposeView
@@ -141,6 +143,13 @@ class SampleActivity : ComponentActivity() {
141
143
}
142
144
// [END android_compose_interop_migration_common_scenarios_navigation_step_2]
143
145
146
+ // [START android_compose_interop_migration_common_scenarios_navigation_step_2_1]
147
+ @Serializable data object First
148
+ @Serializable data class Second (val id : String )
149
+ @Serializable data object Third
150
+
151
+ // [END android_compose_interop_migration_common_scenarios_navigation_step_2_1]
152
+
144
153
private object MigrationCommonScenariosNavigationStep3 {
145
154
// [START android_compose_interop_migration_common_scenarios_navigation_step_3]
146
155
@Composable
@@ -164,7 +173,7 @@ private object MigrationCommonScenariosNavigationStep4 {
164
173
fun SampleNavHost (
165
174
navController : NavHostController
166
175
) {
167
- NavHost (navController = navController, startDestination = " first " ) {
176
+ NavHost (navController = navController, startDestination = First ) {
168
177
// ...
169
178
}
170
179
}
@@ -191,11 +200,11 @@ class FirstFragment : Fragment() {
191
200
fun SampleNavHost (
192
201
navController : NavHostController
193
202
) {
194
- NavHost (navController = navController, startDestination = " first " ) {
195
- composable( " first " ) {
203
+ NavHost (navController = navController, startDestination = First ) {
204
+ composable< First > {
196
205
FirstScreen (/* ... */ ) // EXTRACT TO HERE
197
206
}
198
- composable( " second " ) {
207
+ composable< Second > {
199
208
SecondScreen (/* ... */ )
200
209
}
201
210
// ...
@@ -220,20 +229,22 @@ private object MigrationCommonScenariosNavigationStep7 {
220
229
fun SampleNavHost (
221
230
navController : NavHostController
222
231
) {
223
- NavHost (navController = navController, startDestination = " first " ) {
224
- composable( " first " ) {
232
+ NavHost (navController = navController, startDestination = First ) {
233
+ composable< First > {
225
234
FirstScreen (
226
235
onButtonClick = {
227
236
// findNavController().navigate(firstScreenToSecondScreenAction)
228
- navController.navigate(" second_screen_route " )
237
+ navController.navigate(Second (id = " ABC " ) )
229
238
}
230
239
)
231
240
}
232
- composable(" second" ) {
241
+ composable<Second > { backStackEntry ->
242
+ val secondRoute = backStackEntry.toRoute<Second >()
233
243
SecondScreen (
244
+ id = secondRoute.id,
234
245
onIconClick = {
235
246
// findNavController().navigate(secondScreenToThirdScreenAction)
236
- navController.navigate(" third_screen_route " )
247
+ navController.navigate(Third )
237
248
}
238
249
)
239
250
}
@@ -410,6 +421,7 @@ fun SampleApp() {
410
421
411
422
@Composable
412
423
fun SecondScreen (
424
+ id : String = "<no ID supplied>",
413
425
onIconClick : () -> Unit = {},
414
426
) {
415
427
}
0 commit comments