首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在抽屉布局(带有导航抽屉菜单)中使用(NavGraph)?

如何在抽屉布局(带有导航抽屉菜单)中使用(NavGraph)?
EN

Stack Overflow用户
提问于 2020-01-31 03:12:32
回答 1查看 1.4K关注 0票数 1

我有一个导航图,它将这个片段作为主活动XML的主页使用。

代码语言:javascript
复制
        <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"/>

我有一个带有菜单的抽屉布局,当我点击导航抽屉按钮时,我无法使导航工作(它从主片段中运行,但当我点击抽屉按钮时就不行了),如果我使用旧的方式编程导航抽屉:getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new_fragment).commit();,我的导航控制器丢失了!我会犯这样的错误

if控制器未知的目标片段,因为控制器将看到当前显示的主片段,即使情况不是这样(从调试中)

代码语言:javascript
复制
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...
        }

因此,我的问题是:如何在中重写这个onNavigationItemSelected以使导航组件工作?有关这个主题的链接或相关文档(用Java语言)吗?.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-31 04:26:33

导航组件在NavigationUI工件中在navigation-ui工件中提供了一个助手类。根据用导航文档更新UI组件,您可以使用setupWithNavController()方法通过将目标项绑定到菜单项自动将菜单项连接到在导航图中设置的导航目的地。

如果MenuItem的id与目的地的id匹配,则NavController可以导航到该目的地。

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

代码语言:javascript
复制
NavigationView navView = findViewById(R.id.nav_view);
// This is what sets up its own onNavigationItemSelected
NavigationUI.setupWithNavController(navView, navController);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59997397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档