Android - 多Fragment ,toolbar 菜单错乱问题

问题描述:

在使用 单 activity 与 多fragment 通过viewpager组合使用的时候,每个fragment都有自己的菜单,进而通过每个页面有单独的toolbar进行实现。实现代码如下:

//第一步
 @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

//第三步 : 注册toolbar
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        mainBinding = DataBindingUtil.bind(view);
        mainBinding.toolbar.setTitle(getString(R.string.main_index_toolbar_title));
        //问题所在!!!!
        ((AppCompatActivity) getActivity()).setSupportActionBar(mainBinding.toolbar);
    }

//第二步
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_search:
                break;
            case R.id.action_chip:
                break;
        }
        return super.onOptionsItemSelected(item);
    }

如果在每个fragment进行toolbar的绑定的时候:

 ((AppCompatActivity) getActivity()).setSupportActionBar(mainBinding.toolbar);

就出现了 菜单错乱问题。


解决 :

将toolbar 当做单独的控件使用,不做为actionbar使用:

 mainBinding.toolbar.setTitle(getString(R.string.main_index_toolbar_title));
        mainBinding.toolbar.inflateMenu(R.menu.menu_main_mian); //加载菜单
        mainBinding.toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
            //点击事件
                switch (item.getItemId()){
                    case R.id.action_search:

                        break;
                    case R.id.action_chip:

                        break;
                }
                return false;
            }
        });
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 像素格子 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读