0

我正在使用单活动导航组件结构。在主机活动中,我使用导航抽屉和底部导航。

所以底部导航Fragment AFragment B中有 2 个片段。我需要为片段 A 和片段 B 添加菜单图标(搜索图标)和(聊天图标)。

那么我如何从片段中将这些图标添加到主机活动工具栏上

主机活动

    private fun setupViews()
{
    drawerLayout = binding.drawerLayout

    // Finding the Navigation Controller
    navController = findNavController(R.id.hostFragmentLanding)

    // Setting Navigation Controller with the BottomNavigationView
    binding.bottomNavView.setupWithNavController(navController)

    appBarConfiguration = AppBarConfiguration(topLevelDestinationIds = TOP_LEVEL_DESTINATIONS, drawerLayout)
    // Set up ActionBar
    setSupportActionBar(binding.toolBar)
    setupActionBarWithNavController(navController, appBarConfiguration)
    binding.navigationView.setupWithNavController(navController)

}

override fun onSupportNavigateUp(): Boolean {
    return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}

override fun onBackPressed() {
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
        drawerLayout.closeDrawer(GravityCompat.START)
    } else {
        super.onBackPressed()
    }
}

host_activity_xml

    <?xml version="1.0" encoding="utf-8"?>

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:fitsSystemWindows="true">

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

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/appBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:elevation="0dp"
            android:fitsSystemWindows="true">

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolBar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:title=""
                app:theme="@style/ToolbarTheme"
                >

                <ImageView
                    android:id="@+id/logo"
                    android:layout_width="97dp"
                    android:layout_height="@dimen/dp_20"
                    android:src="@drawable/logo_sportsal"
                    android:layout_gravity="center"
                   />


            </androidx.appcompat.widget.Toolbar>

        </com.google.android.material.appbar.AppBarLayout>


        <fragment
            android:id="@+id/hostFragmentLanding"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            app:navGraph="@navigation/navigation_landing" />


        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottomNavView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
            style="@style/Widget.MaterialComponents.BottomNavigationView"
            app:menu="@menu/bottom_navigation_menu"
            />

    </LinearLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/navigation_view"
        style="@style/Widget.MaterialComponents.NavigationView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start" />



</androidx.drawerlayout.widget.DrawerLayout>

我想将片段 A中的菜单(搜索)图标添加到 Hostactivity工具栏

4

1 回答 1

0

我从片段类中直接添加了菜单图标

片段 A

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    setHasOptionsMenu(true)

}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    super.onCreateOptionsMenu(menu, inflater)
    inflater.inflate(R.menu.menu_home_fragment, menu)
    menu.findItem(R.id.search).isVisible = false
    menu.findItem(R.id.qrScan).isVisible = false
    menu.findItem(R.id.notification).isVisible = true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if (item.itemId == R.id.search) {
    }
    return super.onOptionsItemSelected(item)
}

因此菜单项已自动添加到主机活动工具栏

于 2022-02-23T11:45:30.080 回答