如何从父类重写方法

Rob*_*Rob 1 java inheritance android toolbar

我正在研究一个Android项目,我试图从父类重写一个方法.我仍然希望该方法完全相同,唯一的事情是我需要再添加一行.这是我的BaseFragment中的方法:

protected void setUpToolBar(String title, boolean home){
    Toolbar toolbar = (Toolbar)getView().findViewById(R.id.toolbar);
    if (toolbar != null){

        toolbar.setTitle(title);

        if(home){
            toolbar.setNavigationIcon(R.drawable.arrow_left);
        }


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

        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我从FeedFragment(从BaseFragment扩展)调用并添加以下行时,我希望保持所有工作正常:

toolbar.inflateMenu(R.menu.menu_main);
Run Code Online (Sandbox Code Playgroud)

我需要它,因为FeedFragment上的菜单与PostFragment上的菜单不同,并且两个片段都从BaseFragment继承.

我想我应该这样做:

@Override
private void setUpToolBar(){
    toolbar.inflateMenu();
}
Run Code Online (Sandbox Code Playgroud)

虽然不行.有什么想法吗?

obs:这个问题被标记为可能重复,但另一个是理论上的,我认为这不会帮助我弄清楚如何解决我的问题.选择的答案只是击中头部.

Far*_*rid 5

你应该覆盖完全相同的方法签名

@override
protected void setUpToolBar(String title, boolean home){
    super.setUpToolBar(title,home);
    toolbar.inflateMenu();
}
Run Code Online (Sandbox Code Playgroud)