使用片段恢复主页/抽屉按钮

时间:2015-10-22 20:37:16

标签: android android-fragments android-actionbar android-homebutton

我有一个主要活动的应用程序,它加载了一个导航抽屉,以及一对加载在该活动中的片段...... 在导航抽屉里我有4个选项A,B,C和D ...第一个在我的活动上加载FragmentA,最后3个加载FragmentB ..

FragmentA 显示元素列表,在选择其中一个元素后, FragmentB 用于加载其内容...我想更改主页(汉堡包/从 FragmentA 启动时, FragmentB 上的图标,用于向上图标(并更改相应的行为以选择弹出窗口)..我对此没有问题{ {1}},但由于所有这一切都发生在一个活动中,如果我从导航抽屉中选择另一个选项(比如说B),那么仍然会显示向上图标(它也显示在弹出的片段上)...... 如果我使用setDisplayHomeAsUpEnabled(true)所有这一切都是隐藏工具栏中的主页/向上按钮,我需要恢复主页按钮并确保在从抽屉启动 FragmentB 时显示菜单......

这个问题对任何人都响了吗?或者我只是以错误的方式使用片段? ..任何建议将不胜感激

修改 这或多或少是我在代码中所拥有的

在主要活动中...作为抽屉的onNavigationItemSelected(MenuItem项目)我有这样的东西......

setDisplayHomeAsUpEnabled(false)

根据选择的选项选择要加载的片段..

在FragmentA中我用这个调用FragmentB ..

switch(optionNumber) {
            case 0:
                  fragment = FragmentA.newInstance(optionNumber);
                break;
            default:
                  fragment = FragmentB.newInstance(optionNumber);
                break;
        }
        Fragment frag = fragmentManager.findFragmentByTag("current_fragment");
        if (frag != null && frag.getClass() == FolderFragment.class){
            ((FolderFragment)frag).resetScroll();
        }

        fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        fragmentManager.beginTransaction().replace(R.id.content, fragment, "current_fragment").commit();

保留堆栈中的片段

在onResume()函数里面的fragmentB中,我得到了像......

 FragmentB fFragment = FragmentB.newInstance(position);
    Bundle args = new Bundle();
    args.putString("filter", "something"); fFragment.setArguments(args);

    mActivity.getSupportFragmentManager().beginTransaction()
            .replace(R.id.flContent, fFragment, "current_fragment")
            .addToBackStack(null)
            .commit();

所以当我创建fragmentB时,我检查参数并查看它是否来自fragmentA(我还可以查看fragmentmanager backstack并查看是否有什么内容)......我只是用setDisplayShowHomeEnabled更改抽屉图标(如果我返回FragmentA(通过onBackPressed()),则留下后退箭头FragmentA显示箭头,我需要它来显示原始抽屉图标......如果我从抽屉菜单中选择一个选项,也会发生同样的情况... 这是否更清楚我的问题?...我有一些注释代码,因为它不起作用..如果我用setDisplayHomeAsUpEnabled(false)激活该行...图标只是从活动中消失(这是预期的据我所知,该功能的结果... ...

1 个答案:

答案 0 :(得分:0)

过了一会儿我终于找到了这篇文章

  

Switching between Android Navigation Drawer image and Up caret when using fragments

我想当在界面中涉及抽屉时,您可能需要使用该组件处理此问题...这篇文章给了我答案。
特别注意Wolfram Rittmeyer的最后评论