如何使用Android导航组件实现导航抽屉

时间:2019-04-17 10:37:06

标签: android android-jetpack android-architecture-navigation

我正在尝试遵循Google最新的良好做法,即通过导航组件实现单个活动应用程序。

但是,在阅读了整个Navigation文档之后,我仍然认为很多情况下他们没有解决。

例如,如何实现以下情况:

navgraph

  • 应用程序在启动屏幕中启动。然后,在加载后转到新闻片段。

注意:由于不再需要启动屏幕,因此应从后退弹出窗口。

  • 第1节的所有片段中都应该有一个导航抽屉,允许用户在本节的各个片段之间导航。

  • 但是,该部分中的某些片段可以导航到应该具有后退按钮(而不是抽屉)的新区域。

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用选定的Navigation Drawer Activity创建新项目?

1。抽屉

在xml中,您应该为此活动添加一个FrameLayout来保存片段。然后,您可以开始将此活动用作片段的容器,并在DrawerMenuItem上单击以加载特定片段。 我使用这种方法重新加载片段:

public void replaceFragment (Fragment fragment, Bundle args){
    fragment.setArguments(args);
    getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
}

并从活动中这样调用它:

replaceFragment(Fragment.newInstance(), args)

然后,您可以在所有碎片中找到自己的抽屉。

2。带有后退箭头的详细信息屏幕

对于另一个带有“文章详细信息”的屏幕,您可以从详细信息开始活动:

startActivity(new Intent(packageContext, ArticleDetailsActivity.class));

然后没有抽屉,您就拥有一个后退按钮。

3。溅起

关于创建“好的”初始屏幕Google“正确的Android初始屏幕”,在中级(由Sylvain Saurel撰写)或bignerdranch(由Chris Stewart撰写)中涉及该主题的帖子。

答案 1 :(得分:0)

使用navController上的DestinatedChangedListener锁定和解锁抽屉模式。