diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt index 539d5041d..12bfa58b0 100644 --- a/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt +++ b/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt @@ -39,10 +39,13 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.windowsizeclass.WindowSizeClass import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.Modifier import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier +import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp @@ -155,15 +158,20 @@ private fun NiABottomBar( tonalElevation = 0.dp ) { - TOP_LEVEL_DESTINATIONS.forEach { destination -> - val selected = - currentDestination?.hierarchy?.any { it.route == destination.route } == true + var selected by rememberSaveable { + mutableStateOf(0) + } + TOP_LEVEL_DESTINATIONS.forEachIndexed { index, destination -> + val isSelect = selected == index NavigationBarItem( - selected = selected, - onClick = { onNavigateToTopLevelDestination(destination) }, + selected = isSelect, + onClick = { + selected = index + onNavigateToTopLevelDestination(destination) + }, icon = { Icon( - if (selected) { + if (isSelect) { destination.selectedIcon } else { destination.unselectedIcon