Android导航组件将参数传递给抽屉式导航条目

时间:2020-10-02 18:50:13

标签: java android navigation-drawer android-jetpack android-jetpack-navigation

我正在将Android导航组件与抽屉菜单一起使用。我的工具栏包含一个微调器元素。我只能访问MainActivity.java上的spinner-element。现在,我想将微调器的用户选择传递给抽屉菜单项。

NavController(位于MainActivity.java中)

    // set up navigation
    navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupWithNavController(binding.navView, navController);
    // top level dest
    Set<Integer> topLevelDest = new HashSet<>();
    topLevelDest.add(R.id.nav_foo);
    topLevelDest.add(R.id.nav_bar);

    appBarConfiguration =
            new AppBarConfiguration.Builder(topLevelDest).setDrawerLayout(binding.drawerLayout)
                    .build();
    NavigationUI.setupWithNavController(binding.toolbar.toolbar, navController, appBarConfiguration);

这是我的MainActivity.xml,其中包括一个Drawerlayout,NavHostFragment和CustomToolbar:

<androidx.drawerlayout.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar" />

        <fragment
            android:id="@+id/nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/drawer_navigation" />
    </LinearLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:menu="@menu/drawer_menu" />

</androidx.drawerlayout.widget.DrawerLayout>

这是我的导航图:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_navigation"
app:startDestination="@id/nav_foo">
<fragment
    android:id="@id/nav_foo"
    android:name="FooFragment"
    tools:layout="@layout/fragment_foo"/>
<fragment
    android:id="@id/nav_bar"
    android:name="BarFragment">
</fragment>
<fragment
    android:id="@+id/nav_A"
    android:name="AFragment"
    tools:layout="@layout/fragment_A" />
</navigation>

我可以通过binding.toolbar.spinner在MainActivity中访问微调器

现在,我想将工具栏中的微调器(int)的选择传递给fragment_A,fragment_A也是DrawerNav-Entry,但没有顶级目标。

这有可能吗?

我暂时通过共享首选项解决了该问题

致谢

0 个答案:

没有答案