我正在开发一个带有带有片段和导航图的导航组件的 Android 应用程序。 我的应用程序有一个带有菜单项的 BottomNavigationView,如“将目的地绑定到菜单项”中所述 从我的 HomeFragment 中,我可以通过从列表中选择某些元素来导航到 DetailFragment。 但是,当我从底部导航中选择另一个项目(例如 SecondFragment),然后选择 HomeFragment 项目时,我最终会再次进入 DetailView。
预期的行为是导航到(父)HomeFragment。我该怎么做?
我正在使用
androidx.navigation:navigation-fragment
和 androidx.navigation:navigation-ui
2.7.7.
我的代码如下所示:
// MainActivity
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
.findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();
bottomNavigationView = findViewById(R.id.bottom_navigation);
NavigationUI.setupWithNavController(bottomNavigationView, navController);
<!-- bottom_nav_menu.xml -->
<item
android:id="@+id/homeFragment"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/label_program" />
<item
android:id="@+id/secondFragment"
android:icon="@drawable/ic_star_black_24dp"
android:title="@string/label_second" />
...
<!-- activity_main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/colorWhite"
app:menu="@menu/bottom_nav_menu" />
</LinearLayout>
在我的 HomeFragments 中
onItemClick
我通过以下方式导航:
bundle.putInt(ItemDetailFragment.ARG_PARAM1, mItems.get(position).item.getId());
navController.navigate(R.id.itemDetailFragment, bundle);
提前致谢!
您需要使用 Fragments 为 BottomNavigationView Android 中的每个选项卡单独的返回堆栈