我有一个主要活动的应用程序,它加载了一个导航抽屉,以及一对加载在该活动中的片段...... 在导航抽屉里我有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)激活该行...图标只是从活动中消失(这是预期的据我所知,该功能的结果... ...
答案 0 :(得分:0)
过了一会儿我终于找到了这篇文章
Switching between Android Navigation Drawer image and Up caret when using fragments
我想当在界面中涉及抽屉时,您可能需要使用该组件处理此问题...这篇文章给了我答案。
特别注意Wolfram Rittmeyer的最后评论