Фрагмент панели инструментов не показывает кнопки меню

#android

#Android

Вопрос:

У меня есть навигация по нижней панели с панелью инструментов, прикрепленной к верхней части, и я пытаюсь отобразить кнопку воспроизведения меню. Но вместо того, чтобы отображаться на нижней панели инструментов, он отображается на главной панели инструментов, где находится меню настроек.

     CoordinatorLayout coordinatorLayout = (CoordinatorLayout) v.findViewById(R.id.bottom_sheet_coor);



    final View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);

    final BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
    Toolbar toolbar = (Toolbar) coordinatorLayout.findViewById(R.id.bottomToolBar);
    setHasOptionsMenu(true);
  

Приведенный выше код находится во фрагменте, вот методы меню опций:

 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.menu_play, menu);
}
  

Вот файл меню:

 <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@ id/action_play_bar"
        android:orderInCategory="100"
        android:icon="@drawable/ic_play_arrow"
        android:title="@string/play_button"
        app:showAsAction="always" />
</menu>
  

И это xml для навигации по нижнему листу, где я хочу, чтобы отображалась панель инструментов:

     <android.support.v7.widget.Toolbar
        android:id="@ id/bottomToolBar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:background="@color/colorPrimary">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:id="@ id/toolbar_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_marginBottom="16dp"
                android:gravity="center_horizontal"
                android:text="Play now!"
                android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintStart_toStartOf="parent" />
        </android.support.constraint.ConstraintLayout>


    </android.support.v7.widget.Toolbar>
  

Любая помощь относительно того, почему она отображается на панели инструментов главного навигационного ящика, а не на нижней панели инструментов, была бы весьма признательна

Ответ №1:

Вы здесь что-то путаете. Вот почему вы получаете это.

вот пример блока кода. поместите его в любой FrameLayout.

 <android.support.design.widget.BottomNavigationView
        android:id="@ id/navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="?android:attr/windowBackground"
        app:menu="@menu/navigation" />
  

здесь app:menu="@menu/navigation" должно быть предоставлено меню для этого виджета точно так же, как DrawerLayout . Вам не нужно явно раздувать это. Теперь поместите свой пункт меню воспроизведения в это меню навигации и вуаля!!

onCreateOptionsMenu(..) используется для добавления меню на панель инструментов

Надеюсь, это поможет!!!

Ответ №2:

  override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)
     setHasOptionsMenu(true)
 }
  

Вы не написали этот переопределенный метод во фрагменте.
Надеюсь, это поможет!!!