使用
- layout 提供
androidx.fragment.app.FragmentContainerView
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost="true"
app:navGraph="@navigation/導航圖"
com.google.android.material.bottomnavigation.BottomNavigationView
- 導航圖
<navigation
app:startDestination="@id/fragmentone">
<fragment
android:id="@+id/fragmentone"
android:name="com.xx.fragmentone"
android:label="fragmentxx"
tools:layout="@layout/fragment_one">
<action
android:id="@+id/action_pagetwo"
app:destination="@id/fragmenttwo" />
<action...
</fragment>
- Activiity中初始化
NavHostFragment navHostFragment = (NavHostFragment)getSupportFragmentManager().findFragmentById(R.id.FragmentContainerView的id);
NavController controller = navHostFragment.getNavController();
NavigationUI.setupWithNavController(底部導航欄的view,controller);
- 導航跳轉(zhuǎn)
Navigation.findNavController(view).navigate(R.id.跳轉(zhuǎn)的page);
原理
基本原理
NavHostFragFragment作為主導航
持有NavControll對象
---NavDestination存儲回退棧
交給Navgator 做---->navigate
activitystart或者fragmentmanager的方式做跳轉(zhuǎn)