隐藏/显示操作栏选项菜单项目的不同片段 [英] Hide/Show Action Bar Option Menu Item for different fragments

查看:152
本文介绍了隐藏/显示操作栏选项菜单项目的不同片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个福尔摩斯片段活动,其中有3个片段。

I have a Sherlock Fragment Activity in which there are 3 Fragments.

片段A,片段B,C片段有三个片段。我想说明的片段B只。

Fragment A, Fragment B, Fragment C are three fragments. I want to show a done option menu in Fragment B only.

和该活动开始片段A.当片段B选择完成按钮被添加。

And the activity is started with Fragment A. When Fragment B is selected done button is added.

@Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        if(!menusInflated){
            inflater.inflate(R.menu.security, menu);
            menusInflated=true;
        }
        super.onCreateOptionsMenu(menu, inflater);
    }

当我重新开始片段。我想选项菜单中进行(这是设定在片段B)为了这个,我正在做这样的

When I again start Fragment A I want to options Menu DONE (which was set at Fragment B) for this I am doing like this

        setHasOptionsMenu(false);
MenuItem item = (MenuItem) menu.findItem(R.id.done_item);
        item.setVisible(false);

但是,这是不是隐藏在所有的,也这是给NullPointerException异常活动时,如果第一次开始与片段A。

But this is not hiding at all, also it is giving NullPointerException when Activity if first started with Fragment A.

请让我知道是什么问题。

Please let me know what is the problem.

推荐答案

这是这样的一种方式:

添加一个团到你的菜单:

add a "group" to your menu:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <group
        android:id="@+id/main_menu_group">
         <item android:id="@+id/done_item"
              android:title="..."
              android:icon="..."
              android:showAsAction="..."/>
    </group>
</menu>

然后,添加一个

then, add a

Menu menu;

变量,你的活动,并设置它在你的onCreateOptionsMenu的覆盖:

variable to your activity and set it in your override of onCreateOptionsMenu:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    this.menu = menu;
    // inflate your menu here
}

后,添加和使用此功能的活动,当你想显示/隐藏菜单:

After, add and use this function to your activity when you'd like to show/hide the menu:

public void showOverflowMenu(boolean showMenu){
        if(menu == null)
            return;
        menu.setGroupVisible(R.id.main_menu_group, showMenu);
}

我并不是说这是最好的/唯一的办法,但它很适合我。

I am not saying this is the best/only way, but it works well for me.

这篇关于隐藏/显示操作栏选项菜单项目的不同片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆