Merge "Add startDestination arg to SpaActivity"

This commit is contained in:
Chaohui Wang
2022-08-26 05:17:51 +00:00
committed by Android (Google) Code Review
2 changed files with 21 additions and 13 deletions

View File

@@ -22,7 +22,7 @@
android:label="@string/app_label"
android:supportsRtl="true">
<activity
android:name="com.android.settingslib.spa.gallery.MainActivity"
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

View File

@@ -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"
}
}