diff --git a/packages/SettingsLib/Spa/gallery/AndroidManifest.xml b/packages/SettingsLib/Spa/gallery/AndroidManifest.xml index e5bf8ca60576e..e34feddb8a249 100644 --- a/packages/SettingsLib/Spa/gallery/AndroidManifest.xml +++ b/packages/SettingsLib/Spa/gallery/AndroidManifest.xml @@ -20,7 +20,8 @@ + android:supportsRtl="true" + android:enableOnBackInvokedCallback="true"> diff --git a/packages/SettingsLib/Spa/spa/build.gradle b/packages/SettingsLib/Spa/spa/build.gradle index 104966d9b097e..418d6cb477fa4 100644 --- a/packages/SettingsLib/Spa/spa/build.gradle +++ b/packages/SettingsLib/Spa/spa/build.gradle @@ -59,6 +59,7 @@ android { } dependencies { + api "androidx.appcompat:appcompat:1.6.0-rc01" api "androidx.compose.material3:material3:$jetpack_compose_material3_version" api "androidx.compose.material:material-icons-extended:$jetpack_compose_version" api "androidx.compose.runtime:runtime-livedata:$jetpack_compose_version" diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt index ae15da66d68bf..e5a1862599b64 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt @@ -22,7 +22,10 @@ import androidx.activity.compose.setContent import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable import androidx.navigation.NavGraph.Companion.findStartDestination +import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController @@ -50,9 +53,6 @@ open class BrowseActivity( @Composable private fun MainContent() { - val destination = - intent?.getStringExtra(KEY_DESTINATION) ?: sppRepository.getDefaultStartPageName() - val navController = rememberNavController() CompositionLocalProvider(navController.localNavController()) { NavHost(navController, ROOT_PAGE_NAME) { @@ -70,13 +70,23 @@ open class BrowseActivity( } } } + } + InitialDestinationNavigator(navController) + } + + @Composable + private fun InitialDestinationNavigator(navController: NavHostController) { + val destinationNavigated = rememberSaveable { mutableStateOf(false) } + if (destinationNavigated.value) return + destinationNavigated.value = true + LaunchedEffect(Unit) { + val destination = + intent?.getStringExtra(KEY_DESTINATION) ?: sppRepository.getDefaultStartPageName() if (destination.isNotEmpty()) { - LaunchedEffect(Unit) { - navController.navigate(destination) { - popUpTo(navController.graph.findStartDestination().id) { - inclusive = true - } + navController.navigate(destination) { + popUpTo(navController.graph.findStartDestination().id) { + inclusive = true } } }