Tijs Gobbens
03/24/2023, 4:06 PMjava.util.NoSuchElementException: ArrayDeque is empty.
at kotlin.collections.ArrayDeque.removeLast(ArrayDeque.kt:163)
at androidx.navigation.NavController.launchSingleTopInternal(NavController.kt:1850)
ephemient
03/24/2023, 4:09 PMTijs Gobbens
03/24/2023, 4:10 PMsealed class Screen(val route: String, val label: String) {
object Screen1 : Screen("screen_1_route", "screen 1")
object Screen2 : Screen("screen_2_route", "screen 2")
}
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
EmptyTestTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
val items = listOf(Screen.Screen1, Screen.Screen2)
val navController = rememberNavController()
Column(
modifier = Modifier
.fillMaxSize()
) {
NavHost(
navController = navController,
startDestination = Screen.Screen1.route,
modifier = Modifier
.fillMaxWidth()
.weight(1f)
) {
composable(route = Screen.Screen1.route) {
Box(modifier = Modifier.fillMaxSize()) {
Text(
text = Screen.Screen1.label,
// !! WARNING !!
// REMOVING THIS LINE WILL "FIX" THE CRASH
modifier = Modifier.clickable { navController.popBackStack() }
)
}
}
composable(route = Screen.Screen2.route) {
Box(modifier = Modifier.fillMaxSize()) {
Text(text = Screen.Screen2.label)
}
}
}
Row(
modifier = Modifier
.fillMaxWidth()
.height(72.dp)
) {
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navBackStackEntry?.destination
items.forEach { screen ->
val selected = currentDestination?.hierarchy?.any { it.route == screen.route } == true
Box(
modifier = Modifier
.fillMaxHeight()
.weight(1f)
.clickable {
navController.navigate(screen.route) {
popUpTo(navController.graph.findStartDestination().id)
launchSingleTop = true
}
}
) {
Text(
text = screen.label,
color = if (selected) MaterialTheme.colors.primaryVariant else MaterialTheme.colors.onBackground,
modifier = Modifier.align(Alignment.Center)
)
}
}
}
}
}
}
}
}
}
Ian Lake
03/24/2023, 4:25 PMIan Lake
03/24/2023, 4:26 PMTijs Gobbens
03/28/2023, 10:46 AM