为什么我的选项菜单没有正确显示设置菜单项?

时间:2014-08-20 18:41:44

标签: android facebook fragment

我来自https://developers.facebook.com/docs/android/scrumptious/authenticate

这是我的代码(与教程完全相同)的选项菜单部分

@Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // only add the menu when the selection fragment is showing
        if (fragments[SELECTION].isVisible()) {
            if (menu.size() == 0) {
                settings = menu.add(R.string.settings);
            }
            return true;
        } else {
            menu.clear();
            settings = null;
        }
        return false;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        if (item.equals(settings)) {
            showFragment(SETTINGS, true);
            return true;
        }
        return false;
    }
发生什么事情大部分时间都有效,但我找到了一个我无法调试的测试用例。当您注销时,菜单项仍会显示,您必须单击它才能使其消失。(它不应该出现)。这对我来说并不是一件大事,但我发现当你点击菜单项后再次登录使其消失时,选项菜单根本不会出现。

1 个答案:

答案 0 :(得分:0)

我想我发现了问题,我把它留给别人。从When and how often onPrepareOptionsMenu() method is called for ActionBar?,我得到了“在Android 3.0及更高版本上,当你想要更新菜单时,你必须调用invalidateOptionsMenu(),因为菜单总是打开。然后系统将调用onPrepareOptionsMenu()以便你可以更新菜单项。“ 当我退出时,即使没有实际的菜单项,菜单仍然是打开的。然而,当我点击菜单时它是空的,它搞砸了,所以当我登录时,显示将无法正常工作。我还不明白那部分。我希望有人可以详细说明那部分期间发生的事情