diff options
| author | 2022-09-14 15:45:39 +0800 | |
|---|---|---|
| committer | 2022-09-14 16:47:59 +0800 | |
| commit | 098ecd9dbfff31dbe8f6a12420100015407ed9eb (patch) | |
| tree | aa6f962a9e487dbafcd171e86243417b64663246 | |
| parent | 826ce0df09a32e32148940986de44fb574de3eee (diff) | |
Fix destination reset after configuration change
Also enable predictive back gesture for Gallery App.
Bug: 244122804
Test: Manual with Gallery App
Change-Id: I68bb694c87b2614aa908f1e973aea8fa7288f47c
3 files changed, 21 insertions, 9 deletions
diff --git a/packages/SettingsLib/Spa/gallery/AndroidManifest.xml b/packages/SettingsLib/Spa/gallery/AndroidManifest.xml index e5bf8ca60576..e34feddb8a24 100644 --- a/packages/SettingsLib/Spa/gallery/AndroidManifest.xml +++ b/packages/SettingsLib/Spa/gallery/AndroidManifest.xml @@ -20,7 +20,8 @@ <application android:icon="@mipmap/ic_launcher" android:label="@string/app_label" - android:supportsRtl="true"> + android:supportsRtl="true" + android:enableOnBackInvokedCallback="true"> <activity android:name=".MainActivity" android:exported="true"> diff --git a/packages/SettingsLib/Spa/spa/build.gradle b/packages/SettingsLib/Spa/spa/build.gradle index 104966d9b097..418d6cb477fa 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 ae15da66d68b..e5a1862599b6 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 } } } |