隐藏/显示操作栏选项菜单项目的不同片段目的、片段、菜单项、选项

由网友(枕上听雨眠)分享简介:我有一个福尔摩斯片段活动,其中有3个片段。I have a Sherlock Fragment Activity in which there are 3 Fragments.片段A,片段B,C片段有三个片段。我想说明的片段B只。Fragment A, Fragment B, Fragment C are thr...

我有一个福尔摩斯片段活动,其中有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.

阅读全文

相关推荐

最新文章