package com.swiswiswift.swiswikotlin import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Email import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Settings import androidx.compose.material.icons.outlined.Email import androidx.compose.material.icons.outlined.Home import androidx.compose.material.icons.outlined.Settings import androidx.compose.material3.Icon import androidx.compose.material3.NavigationBar import androidx.compose.material3.NavigationBarItem import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import androidx.compose.material3.MaterialTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MaterialTheme { val navController = rememberNavController() val bottomNavigationItems = listOf( BottomNavigationItem( id = Route.FIRST, title = "First", selectedIcon = Icons.Filled.Home, unselectedIcon = Icons.Outlined.Home, ), BottomNavigationItem( id = Route.SECOND, title = "Second", selectedIcon = Icons.Filled.Email, unselectedIcon = Icons.Outlined.Email, ), BottomNavigationItem( id = Route.THIRD, title = "Third", selectedIcon = Icons.Filled.Settings, unselectedIcon = Icons.Outlined.Settings, ), ) val currentRoute = navController.currentBackStackEntryAsState() .value?.destination?.route Scaffold( bottomBar = { NavigationBar { bottomNavigationItems.forEach { item -> NavigationBarItem( selected = currentRoute == item.id.name, onClick = { navController.navigate(item.id.name) { popUpTo(navController.graph.findStartDestination().id) { saveState = true } launchSingleTop = true restoreState = true } }, label = { Text(text = item.title) }, alwaysShowLabel = false, icon = { Icon( imageVector = if (currentRoute == item.id.name) { item.selectedIcon } else { item.unselectedIcon }, contentDescription = item.title ) } ) } } }, modifier = Modifier.fillMaxSize() ) { innerPadding -> NavHost( navController = navController, startDestination = Route.FIRST.name ) { composable(Route.FIRST.name) { Column( modifier = Modifier .fillMaxSize() .padding(innerPadding), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text(text = "First Page") } } composable(Route.SECOND.name) { Column( modifier = Modifier .fillMaxSize() .padding(innerPadding), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text(text = "Second Page") } } composable(Route.THIRD.name) { Column( modifier = Modifier .fillMaxSize() .padding(innerPadding), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text(text = "Third Page") } } } } } } } }