如何在膨胀之前获得OptionsMenu?

时间:2017-08-23 08:17:01

标签: android android-fragments android-optionsmenu

我试图隐藏OptionsMenu依赖于同一活动中片段之间的导航: -

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    this.menu = menu;
    getMenuInflater().inflate(R.menu.result, menu);
    return true;

}

我依靠片段位置隐藏它,如:

if (newStepPosition == 0) {
        if (menu != null){
            menu.setGroupVisible(R.id.resultGroup, false);
        }
    }
    if (newStepPosition == 1) {
            if (menu != null){
            menu.setGroupVisible(R.id.resultGroup, true);
        }

    }

我的问题是,我第一次创建活动时必须看到optionMenu然后隐藏并显示线程工作,如何避免?

我需要隐藏onCreat()中的optionMenu,但它不起作用。

2 个答案:

答案 0 :(得分:1)

您无法隐藏onCreate方法的菜单,因为它还没有膨胀。

尝试使用:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

    menu.clear();

    // do what you want

    return super.onPrepareOptionsMenu(menu);
}

否则,请将您的逻辑放在onCreateOptionsMenu方法中,并在需要刷新内容时调用invalidateOptionsMenu()

答案 1 :(得分:0)

我在onCreateOptionsMenu中完成了这一点,之后外观逻辑完美地工作。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    this.menu = menu;
    getMenuInflater().inflate(R.menu.result, menu);
    if (menu != null){
        menu.setGroupVisible(R.id.resultGroup, false);
    }
    return true;

}