錯誤代碼
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/bottomNavigationView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
...>
原因
使用 FragmentContainerView 創建 NavHostFragment,或通過 FragmentTransaction 手動將 NavHostFragment 添加到您的 Activity 時,嘗試通過 Navigation.findNavController(Activity, @IdRes int) 檢索 Activity 的 onCreate() 中的 NavController 將失敗。
修改方法
直接從 NavHostFragment 檢索 NavController。
示例代碼
NavController navController;
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
navController = navHostFragment.getNavController();