Структура приложения:
Основная деятельность
Фрагмент A - вкладка новостной ленты
Фрагмент B - Подробности публикации
В качестве темы Facebook имеет интересное взаимодействие в нижней панели при просмотре сообщения:
нажатие значка нижней панели во фрагменте сообщения -> возврат к фрагменту ленты новостей (предыдущая страница)
нажатие на иконку нижней панели во фрагменте ленты новостей -> вверх
Я пытался закодировать ее в Java внутри фрагмента следующим образом
прервать NAV-бар моей основной активности с помощью setOnNavigationItemSelectedListener в записи и фрагменте ленты новостей
добавить всплывающий стек () при нажатии на значок нижней панели в фрагменте записи
встроенная функция backtotop при нажатии значка нижней панели во фрагменте ленты новостей
кодирование постфрагмента
navView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
getFragmentManager().popBackStackImmediate();
return true;
}
});
фрагмент ленты новостей
navView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
int scrollY = scrollView.getScrollY();
if (scrollY > 0) {
scrollView.smoothScrollTo(0,(int) root.getY());
} else if (scrollY == 0) {
//disable listener and use back the nav function
}
return true;
}
});
Я обнаружил, что есть 2 проблемы после реализации
На слушателе все еще устанавливается полоса NAV. Я не могу перейти на другую вкладку своего приложения. Как я могу вернуться к нормальной функции NAV или удалить прослушиватель
, когда я нажимаю кнопку на панели во фрагменте записи, мой обзор повторного запуска начинается с верхней части фрагмента ленты новостей. Я хочу сохранить прокрученную позицию во фрагменте ленты новостей непосредственно перед тем, как войти в пост. Как сохранить позицию после выполнения popbackstack ().
любой пост / аналогичный пост в предыдущем, который решил мою проблему?