#android #android-jetpack-compose #android-jetpack-navigation
Вопрос:
@Composable
fun HomeScreen(){
val popularListState = rememberLazyListState()
val viewModel: HomeViewModel = hiltNavGraphViewModel()
val popularMovies: List<Movie> by viewModel.popularMoviesLiveData.observeAsState(emptyList())
LazyColumn(
state = popularListState
) {
itemsIndexed(movies) { _, movie ->
HomeMovieComponent(movie = movie)
}
}
}
Всякий раз, когда вы переходите на другой экран с нижней навигационной панели, столбец «ленивый» сбрасывает положение прокрутки вверх
Следуйте этому руководству, чтобы настроить нижнюю навигационную панель
Ответ №1:
Всякий BottomNavigationItem
раз, когда вы выбираете свою композицию, она заменяется другой композицией, а при выборе «Назад» она снова инициализируется. Для восстановления предыдущего композиционного использования saveState = true
и restoreState = true
в вашем BottomNavigationItem
.
BottomNavigationItem(
icon = { /*Some Icon*/ },
label = { /*Some Text*/ },
selected = currentRoute == item.route,
onClick = {
navController.navigate(item.route) {
// Put These line in your code.
popUpTo(navController.graph.startDestinationId) {
saveState = true
}
launchSingleTop = true
restoreState = true
}
}
)
Комментарии:
1. Спасибо, брат, не знал, что документация меняется
2. Была еще одна проблема, когда мы переходим на другой экран без нижней навигации, после чего он не сохраняет состояния
3. используйте
navController.popBackStack()
вместоnavController.navigate(/*Some Route*/)
4. буквально проблема в
collectAsLazyPagingItems()
том, что . К сожалению, я не смог это исправить