Option menu does not appear in the toolbar after being collapsed inside a fragment

17 views Asked by At

Everything was fine when I implemented the collapsed toolbar until I tried to add an option menu.
This is XML code.
Note: I use fragments, not activities.

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_width="match_parent"
        android:layout_height="240dp">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/collapsingToolbarLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/background_glass"
            app:collapsedTitleGravity="center"
            app:collapsedTitleTextAppearance="@font/amaranth_regular"
            app:collapsedTitleTextColor="@color/text_onSurface_color"
            app:expandedTitleTextAppearance="@font/amaranth_regular"
            app:expandedTitleTextColor="@color/text_onSurface_color"
            app:layout_scrollFlags="scroll|snap|exitUntilCollapsed"
            app:titleCollapseMode="scale"
            app:titleEnabled="true"
            app:titleTextEllipsize="end"
            app:toolbarId="@id/toolbar"
            tools:title="Current Weather">

            </androidx.constraintlayout.widget.ConstraintLayout>


            <com.google.android.material.appbar.MaterialToolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin" />
        </com.google.android.material.appbar.CollapsingToolbarLayout>

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

this is Kotlin code.

 override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
    ): View {
        binding = FragmentWeatherBinding.inflate(inflater, container, false)
        (activity as AppCompatActivity).setSupportActionBar(binding.toolbar)
        // Set up the toolbar
        val navController = findNavController()

        binding.toolbar.setupWithNavController(
            navController, AppBarConfiguration(navController.graph)
        )
        return binding.root
    }

Theme.xml

<style name="AppTheme" parent="Theme.Material3.Light.NoActionBar">

For the option menu, I implemented MenuProvider and overrided the following methods:

override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
    menuInflater.inflate(R.menu.toolbar_weather_menu, menu)
}

override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
    when (menuItem.itemId) {
        R.id.action_settings -> {
            Toast.makeText(requireActivity(), "Settings", Toast.LENGTH_LONG).show()
            findNavController().navigate(R.id.action_weatherFragment_to_settingsFragment)
        }
    }
    return true
}
0

There are 0 answers