How to get Toolbar from fragment?

后端 未结 10 1841
梦毁少年i
梦毁少年i 2020-11-28 01:45

I have ActionBarActivity with NavigationDrawer and use support_v7 Toolbar as ActionBar. In one of my fragments toolbar has custom view

10条回答
  •  借酒劲吻你
    2020-11-28 02:40

    In case fragments should have custom view of ToolBar you can implement ToolBar for each fragment separately.

    add ToolBar into fragment_layout:

    
    

    find it in fragment:

    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment, container, false);
            Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
    
            //set toolbar appearance
            toolbar.setBackground(R.color.material_blue_grey_800);
    
            //for crate home button
            AppCompatActivity activity = (AppCompatActivity) getActivity();
            activity.setSupportActionBar(toolbar);
            activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
    

    menu listener could be created two ways: override onOptionsItemSelected in your fragment:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            case android.R.id.home:
                getActivity().onBackPressed();
        }
        return super.onOptionsItemSelected(item);
    }
    

    or set listener for toolbar when create it in onCreateView():

    toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    return false;
                }
            });
    

提交回复
热议问题