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

来源:互联网 发布:电话轰炸机淘宝叫什么 编辑:程序博客网 时间:2024/06/02 12:50

问题描述:

在使用 单 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;            }        });
0 0
原创粉丝点击