0

我想从我的 片段禁用我的navigationdrawer的菜单项的菜单项禁用,但它只是不会工作...的Android - onCreateOptionsMenu - 无法从片段

片段代码:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.waiting_for_terminal, container, false); 

    setHasOptionsMenu(true); 
    return rootView; 
} 

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

     menu.findItem(R.id.nav_amount).setEnabled(false); 
     menu.findItem(R.id.nav_return).setEnabled(false); 
     menu.findItem(R.id.nav_about).setEnabled(false); 
     menu.findItem(R.id.nav_settings).setEnabled(false); 

     super.onCreateOptionsMenu(menu, inflater); 
    } 

我可以为MenuItems调用getTitle(),它会返回正确的值。但由于某些原因的setEnabled()的setTitle(),调用setVisible()等不能正常工作,该值保持不变...

回答

2
Try This: 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    oldDescription= ActivityConstantUtils.sBlogDescriprtion; 
    setHasOptionsMenu(true); 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu_act_add_section, menu); 
    MenuItem item = menu.findItem(R.id.action_preview); 
    item.setIcon(null); 
    item.setTitle(""); 
    super.onCreateOptionsMenu(menu, inflater); 
} 
+0

通过使用这个你可以隐藏一些项目,并显示其他菜单。 –

+0

不起作用:/ – Christer

+0

粘贴您的片段活动。 –

2

禁用菜单项中的片段与片段使用它:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(false); 
} 

活动中删除onCreateOptionsMenu(),并使用一个片段里面为:

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

? – Christer

+0

检查它http://developer.android.com/reference/android/app/Fragment.html#setHasOptionsMenu(boolean) – Androider

+0

检查更新的答案似乎更有帮助 – Androider

0

我认为你正试图禁用的AppBar那家按钮,切换的NavigationDrawer。

我能想到这样做的最好的办法是:

在方法onOptionItemSelected:

protected onOptionItemSelected(MenuItem item) 
{ 
    if(item.getItemId() == android.R.id.home) 
    { 
      // do anything you want here 
    } 
} 

这将帮助你重写主页按钮。

更多了,如果你要替换汉堡图标与默认的箭头图标,你可以使用

mNavigationDrawer.setDrawerIndicatorEnabled(false); 

此外,如果你想关闭抽屉刷卡功能还, 可以使用

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

希望它有助于。 :)

0

妈呀,我的坏...

这是在NavigationView我想禁用的MenuItems ...

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
navigationView.getMenu().findItem(R.id.nav_amount).setEnabled(false); 

感谢您的帮助虽然:)在mainActivity