0

我正在尝试从我的片段中禁用我的导航抽屉中的菜单项,但它不会工作......

片段代码:

@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() 等不起作用,值保持不变......

4

4 回答 4

4

要在片段中禁用 menuitem,请将其与片段一起使用:

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

移除 Activity 中的 onCreateOptionsMenu(),并在片段中使用:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.main, menu);
    }
于 2015-11-30T12:52:33.627 回答
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);
}
于 2015-11-30T12:56:10.003 回答
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);

希望能帮助到你。:)

于 2015-11-30T12:58:13.993 回答
0

天哪,我的坏...

我想禁用的是 NavigationView 中的 MenuItems...

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

不过感谢您的帮助:)

于 2015-12-01T08:26:55.323 回答