如何为 Toolbar 和 BottomAppBar 扩展两个不同的菜单

How to inflate two different menus for a Toolbar and a BottomAppBar

以下导致模拟器中的 post 安装崩溃。未显示调试信息。

package com.example.myapplication;

import android.os.Bundle;

import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.tabs.TabLayout;

import androidx.appcompat.widget.Toolbar;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AppCompatActivity;

import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ListView;

import com.example.myapplication.ui.main.SectionsPagerAdapter;
public class MainActivity extends AppCompatActivity {

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.top_bar, menu);
        return true;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar top_toolbar = findViewById(R.id.top_toolbar);
        setSupportActionBar(top_toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        BottomAppBar bottom_toolbar = findViewById(R.id.bottom_toolbar);
        bottom_toolbar.replaceMenu(R.menu.bottom_bar);
        SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
        ViewPager viewPager = findViewById(R.id.view_pager);
        viewPager.setAdapter(sectionsPagerAdapter);
        TabLayout tabs = findViewById(R.id.tabs);
        tabs.setupWithViewPager(viewPager);
        ImageButton my_posts_button = findViewById(R.id.my_posts_button);
        ImageButton chats_button = findViewById(R.id.chats_button);
        ImageButton post_button = findViewById(R.id.post_button);
        ImageButton settings_button = findViewById(R.id.settings_button);
        ImageButton profile_button = findViewById(R.id.profile_button);
        ImageButton sort_button = findViewById(R.id.search_button);
        ImageButton search_button = findViewById(R.id.sort_button);
    }
}

看起来网站认为我的 post 主要是 code.It 看起来网站认为我的 post 主要是 code.It 看起来网站认为我的 post 主要是代码。

您同时使用了 ToolbarBottomBar。您只能将 onCreateOptionsMenu 用于 setSupportActionBar.

中使用的栏

例如:

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

onCreateOptionsMenu用于Toolbar菜单:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.toolbar_menu, menu);
    return true;
}

然后对于 BottomBar 你可以在布局中使用 app:menu 或者 replaceMenu方法:

    BottomAppBar bottomAppBar = findViewById(R.id.bottomappbar);
    bottomAppBar.replaceMenu(R.menu.bottom_bar);
    bottomAppBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            if (item == R.id...){
                //....
                return true;
            }
            return false;
        }
    });