onCreateOptionsMenu + onPrepareOptionsMenu冲突

时间:2014-05-28 13:30:32

标签: android android-fragments android-actionbar

我使用this tutorial使用appDrawer构建应用 一切都很顺利,我决定在操作栏中添加一个动作按钮!

因此我使用that tutorial来制作它。

这个问题是在第二个教程中,当我添加它时:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_main_actions, menu);

    return super.onCreateOptionsMenu(menu);
}

我的应用程序强制关闭抛出此异常:

NullPointerException

似乎与我在上一个教程中使用的onPrepareOptionsMenu存在冲突:appDrawer。以下是抛出异常的代码:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // if nav drawer is opened, hide the action items
    boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
    menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
    return super.onPrepareOptionsMenu(menu);
}

如果您对这场冲突有什么了解,我很乐意收集并试用它们!

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

我在那段代码中找到了这个问题的答案:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

    boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
    menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
    return super.onPrepareOptionsMenu(menu);
}

我称之为“ R.id.action_settings ”这是无法调用的,因为它在默认的 res / menu / main.xm ** l而我没有使用** RES /菜单/ activity_main_actions.xml

以下是答案:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // if nav drawer is opened, hide the action items
    boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
    menu.findItem(R.id.action_refresh).setVisible(!drawerOpen);
    return super.onPrepareOptionsMenu(menu);
}

非常感谢Tanis。 7x用于帮助我调试那个。