В этом случае вам нужно настроить поток входа в систему в виде вложенного графа внутри основного графика навигации.
Ваш начальный пункт назначения должен быть назначен одному из 3фрагменты подключены к вашему BottomNavigationView
, так что нажатие Назад выводит пользователя на этот экран перед выходом из приложения.
В вашем HomeFragment
(начальном назначении) вы можете проверить,пользователь вошел в систему и, при необходимости, перейдет к вложенному графу входа в систему.
HomeFragment.kt
if (!isLoggedIn) {
val action = HomeFragmentDirections.showLogin()
findNavController().navigate(action)
} else {
// show bottom nav
}
Вам придется обрабатывать скрытие / отображениеBottomNavigationView
по мере необходимости.
Ваш обновленный график навигации будет выглядеть следующим образом:
main_nav.xml
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_nav"
app:startDestination="@id/home">
<fragment
android:id="@+id/home"
android:name="com.example.app.HomeFragment"
android:label="Home">
<action
android:id="@+id/show_login"
app:destination="@id/login_nav"/>
</fragment>
<!-- Fragments B and C -->
<include app:graph="@navigation/login_nav"/>
</navigation>