Простой способ сделать верхние вкладки + переключение между ними.
Итог на видео ниже. Я делаю свою приложение, поэтому фрагменты не оформлены. Но для примера сойдёт и всё видно.
В xml для активити надо вставить два элемента и настроить их отображение. У меня так:
Отдельно самостоятельно создаём нужные фрагменты и xml для них. В них ничего не надо добавлять. Делаете только то, что вам там нужно.
Теперь самое главное. Надо создать адаптер. Мой выглядит так:
Что такое BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT? Так мы говорим, что только текущий фрагмент будет в состоянии RESUMED, а остальные STARTED (если не знаете про это, то гуглите жизненный цикл фрагмента). Есть ещё BEHAVIOR_SET_USER_VISIBLE_HINT, но в документации он помечен deprecated. Там написано, что он зависит от устаревшего апи и рекомендуют использовать тот, что я указала.
Метод fun getItem(position: Int). Тут мы говорим какие фрагменты надо открыть в зависимости от нажатой позиции. Тоже всё просто.
fun getCount() — указываем количество вкладок для TabLayout.
fun getPageTitle(position: Int) — указываем название для вкладки в зависимости от позиции. Всё максимально просто.
И осталось самое важное. Идём в активити/фрагмент, где будет находиться наш переключатель и просто вставляем две строчки:
view_pager.adapter = ViewPagerAdapter(supportFragmentManager)
tab_layout_fragments.setupWithViewPager(view_pager)
view_pager и tab_layout_fragments — это айдишники из xml.
Готово. Вы восхитительны.
Мои изменения есть в коммите: https://github.com/Ladgertha/Savings-Calculator/commit/35b99c7178ef490e54e83aa832829f7fa24defc1