首页 文章

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

提问于
浏览
0

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

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

这个问题对任何人都响了吗?或者我只是以错误的方式使用片段? .. 任何建议将被认真考虑

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

在Main Activity ..作为抽屉的onNavigationItemSelected(MenuItem项)我有这样的东西......

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();

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

在FragmentA中我用这个调用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();

保留堆栈中的片段

并且在onResume()函数里面的fragmentB中我得到了类似的东西......

String filter = getArguments().getString("filter", null);


    if (type != null) {
        mActivity.setTitle(title);
        mActivity.getSupportActionBar().setDisplayShowHomeEnabled(true);

    }else {
        /*mActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        mActivity.getSupportActionBar().setDisplayShowHomeEnabled(true);
        mActivity.getSupportActionBar().setHomeButtonEnabled(true);
        mActivity.getSupportActionBar().setIcon(R.mipmap.ic_menu);*/
    }

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

1 回答

  • 0

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

    使用片段时,在Android导航抽屉图像和向上插入符之间切换

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

相关问题