gpt4 book ai didi

java - 如何在抽屉布局(带有抽屉导航菜单)中使用Android导航组件(导航图)?

转载 作者:行者123 更新时间:2023-11-30 01:40:59 25 4
gpt4 key购买 nike

我有一个导航图,它使用此 fragment 作为主 Activity XML 中的主页。

        <fragment
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
class="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/main_nav_graph"
app:defaultNavHost="true"/>

我有一个带有菜单的抽屉布局,当我单击抽屉导航按钮时,我无法使导航正常工作(它在主 fragment 中工作,但在我单击抽屉按钮时不起作用),如果我使用使用以下命令对抽屉导航进行编程的旧方法:getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new_fragment).commit();
,我的导航 Controller 丢失了!我收到类似

的错误

destination fragment in unknown by navcontroller , because the controller will see the home fragment as currently displayed even if it is not the case (from debug)

public boolean onNavigationItemSelected(MenuItem item) {

switch (item.getItemId()){
case R.id.action_1:
//doesn't work when it current fragment doesnt match the
//action_fromfragmentx_to_fragmenty
Navigation.findNavController(this,R.id.fragment_container)
.navigate(R.id.action_fromfragmentx_to_fragmenty);
break;

//Other menu options...
}

因此我的问题是:我应该如何在 Java 中重写此 onNavigationItemSelected 以使导航组件正常工作?关于此主题的任何链接或相关文档(Java 语言)?.

最佳答案

导航组件在NavigationUI中提供了一个帮助器类。在 navigation-ui Artifact 中。根据Update UI components with Navigation documentation for navigation drawers ,您可以使用 setupWithNavController() 方法自动将菜单项连接到您在导航图中设置的导航目的地 tying the destination item to a menu item :

If the id of the MenuItem matches the id of the destination, the NavController can then navigate to that destination.

因此,您根本不需要 onNavigationItemSelected 实现,也不需要执行任何 FragmentTransactions。只需确保菜单 XML 中的 android:id="@+id/fragment_y" 与导航中的 android:id="@+id/fragment_y" 匹配即可XML 并调用 setupWithNavController():

NavigationView navView = findViewById(R.id.nav_view);
// This is what sets up its own onNavigationItemSelected
NavigationUI.setupWithNavController(navView, navController);

关于java - 如何在抽屉布局(带有抽屉导航菜单)中使用Android导航组件(导航图)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59997397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com