片段选项菜单避免在另一个片段菜单中显示

时间:2016-03-08 09:09:34

标签: android optionmenu

我将一个接一个地替换2个碎片,并且两个碎片都有不同的选项菜单。当我替换第二个片段时,它也显示第一个片段的菜单。 setHasOptionMenu(真);已经设置了两个片段。

我想只显示我正在创建的选项菜单,特别是片段和想要避免其他片段的选项。

请帮助,谢谢

3 个答案:

答案 0 :(得分:0)

只需在onCreate()上调用invalidateOptionsMenu()

更多参考check this one

希望这会对你有所帮助。

答案 1 :(得分:0)

这是活动

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id) {
            //your menu item 
                return true;
        }

        return super.onOptionsItemSelected(item); // important line
    }

片段onCreateView()方法

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true); //imp line
        return inflater.inflate(R.layout.fragment_following, container, false);
    }



@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.fragment_menu, menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id) {
        case R.id.action_1:
            // do stuff
            return true;

        case R.id.action_2:
            // do more stuff
            return true;
    }

    return false;
}

答案 2 :(得分:0)

在更换片段(或提交片段事务)之后,您必须声明选项菜单已更改,您可以通过调用invalidateOptionsMenu()来完成此操作。 onCreateOptionsMenu(Menu)方法将在下次需要显示时调用。

注意:如果您使用的是AppCompat支持库,则需要调用supportInvalidOptionsMenu