From c54004f25cfa2b8922cd4b5ddf9c5bf4e1253c8f Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Thu, 25 Aug 2022 19:07:58 +0800 Subject: [PATCH] Add startDestination arg to SpaActivity To let other activity open Spa pages. Bug: 235727273 Test: Manual with Gallery App Change-Id: I33b391813c0f40fdca6a52d7a9fd3114b2eb89be --- .../Spa/gallery/AndroidManifest.xml | 2 +- .../settingslib/spa/framework/SpaActivity.kt | 32 ++++++++++++------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/packages/SettingsLib/Spa/gallery/AndroidManifest.xml b/packages/SettingsLib/Spa/gallery/AndroidManifest.xml index b5be7cd456889..22299861e0e35 100644 --- a/packages/SettingsLib/Spa/gallery/AndroidManifest.xml +++ b/packages/SettingsLib/Spa/gallery/AndroidManifest.xml @@ -22,7 +22,7 @@ android:label="@string/app_label" android:supportsRtl="true"> diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/SpaActivity.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/SpaActivity.kt index 51d3714ce5eee..12be0702b3ee7 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/SpaActivity.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/SpaActivity.kt @@ -36,24 +36,28 @@ open class SpaActivity( override fun onCreate(savedInstanceState: Bundle?) { setTheme(R.style.Theme_SpaLib_DayNight) super.onCreate(savedInstanceState) + setContent { - MainContent() + SettingsTheme { + MainContent() + } } } @Composable private fun MainContent() { - SettingsTheme { - val navController = rememberNavController() - CompositionLocalProvider(navController.localNavController()) { - NavHost(navController, settingsPageRepository.startDestination) { - for (page in settingsPageRepository.allPages) { - composable( - route = page.route, - arguments = page.arguments, - ) { navBackStackEntry -> - page.Page(navBackStackEntry.arguments) - } + val startDestination = + intent?.getStringExtra(KEY_START_DESTINATION) ?: settingsPageRepository.startDestination + + val navController = rememberNavController() + CompositionLocalProvider(navController.localNavController()) { + NavHost(navController, startDestination) { + for (page in settingsPageRepository.allPages) { + composable( + route = page.route, + arguments = page.arguments, + ) { navBackStackEntry -> + page.Page(navBackStackEntry.arguments) } } } @@ -62,4 +66,8 @@ open class SpaActivity( private val SettingsPageProvider.route: String get() = name + arguments.joinToString("") { argument -> "/{${argument.name}}" } + + companion object { + const val KEY_START_DESTINATION = "spa:SpaActivity:startDestination" + } }