我有一个导航抽屉,想要打开另一个孤立的片段

时间:2020-01-15 09:11:01

标签: java android android-fragments fragment navigation-drawer

我有一个导航抽屉,当我单击一个按钮时,我想转到无法访问导航抽屉和其他任何东西的其他片段。我只想在左上角有一个黑色箭头,以返回并返回所有片段的导航抽屉。 我尝试了一些操作,但无法正常运行,就像我希望导航器可以继续访问并看到机器人布局一样。

主要片段控制器

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = findViewById(R.id.toolbar);
        DrawerLayout drawerLayout=findViewById(R.id.drawer);
        NavigationView navigationView=findViewById(R.id.nav_view);

        setSupportActionBar(toolbar);

        appBarConfiguration= new AppBarConfiguration.Builder(R.id.nav_home,
                R.id.nav_user_data,R.id.nav_join_group,
                R.id.nav_user_groups,R.id.nav_search_documents)
                .setDrawerLayout(drawerLayout).build();

        navController = Navigation
                .findNavController(this,R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this,navController,appBarConfiguration);
        NavigationUI.setupWithNavController(navigationView,navController);



    }

    @Override
    public boolean onSupportNavigateUp() {
        return NavigationUI.navigateUp(navController,appBarConfiguration)
                || super.onSupportNavigateUp();
    }

我正在尝试在ActionBar上使用一个botton,当我单击它时,它应该转到我的新片段(后退一个通用应用程序,但后退一个按钮)

2 个答案:

答案 0 :(得分:0)

您只需像其他文件一样在navigation.xml文件中指定您的操作即可。

这将自动更改汉堡包图标,因为您在这两行代码中将导航控制器与NavDrawer同步:

NavigationUI.setupActionBarWithNavController(this,navController,appBarConfiguration);
NavigationUI.setupWithNavController(navigationView,navController);

答案 1 :(得分:-1)

我们需要在我们的navigation.xml(用于定义与Fragment和布局相关联的片段的文件)中添加一个片段。在其中添加一个具有唯一ID的动作,并在片段所在的位置将其放入。
抱歉,我有点困惑。

导航
我们从那里去

<fragment
        android:id="@+id/nav_user_data"
        android:name="com.example.androidapplication_reto2.project.activities.navigationfragments.SeeAndModifyUserDataFragment"
        android:label="User Data"
        tools:layout="@layout/fragment_see_and_modify_user_data"
        >
        <action
            android:id="@+id/action_nav_user_data_to_nav_modify_data"
            app:destination="@+id/nav_modify_data" />
    </fragment>`

到那里

<fragment
        android:id="@+id/nav_modify_data"
        android:name="com.example.androidapplication_reto2.project.activities.navigationfragments.ModifyUserDataFragment"
        android:label="Modify User Data"
        tools:layout="@layout/fragment_modify_user_data"
        />

使用我们在原始片段中定义的操作。
原始片段

在片段中,当您单击一个按钮时,就会发生这种情况。

Navigation.findNavController(getView()).navigate(R.id.action_nav_user_data_to_nav_modify_data);