Меню панели инструментов не отображается или дублируется при использовании setSupportActionBar - PullRequest
0 голосов
/ 22 февраля 2020

Странное поведение с меню верхней панели на основе материала. Если я добавлю только верхнюю строку в макет XML следующим образом:

<FrameLayout
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbarMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize"
        android:background="?colorPrimary"
        android:theme="?attr/actionBarTheme"
        android:elevation="@dimen/normal_toolbar_elevation"
        app:menu="@menu/top_menu"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:contentInsetStart="@dimen/normal_content_inset" />

    <ViewStub
        android:id="@+id/cab_stub"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize" />

</FrameLayout>

и не буду ничего делать внутри кода действия, появится меню, но как только я добавлю setSupportActionBar внутренняя активность:

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

    setContentView(R.layout.activity_main)

    setSupportActionBar(toolbarMain)
}

меню исчезает (не панель инструментов, только кнопка с 3 точками справа). Теперь, если я добавлю onPrepareOptionsMenu следующим образом:

override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.top_menu, menu)
    return super.onCreateOptionsMenu(menu)
}

меню появляется, но элементы контекстного меню появляются дважды при его открытии.

Что вызывает оба поведения (не появляется, когда используя setSupportActionBar и показывая, но дублируя меню в onPrepareOptionsMenu)?

...