我正在处理一个包含三个片段的应用程序,这些片段在XML文件中定义:
[HeaderFragment]
[MainFragment]
[FooterFragment]
第一个屏幕启动三个片段,Header-和FooterFragment是静态的,因此不会更改内容。
MainFragment是一个初始菜单,带有按钮和透明背景(MenuFragment
)。当我点击菜单中的某个项目时,我将MenuFragment
替换为新的片段(DetailsFragment
),如下所示:
FragmentTransaction transaction = mFragmentManager.beginTransaction();
Fragment newFragment = new DetailFragment();
transaction.replace(R.id.content_container, newFragment);
transaction.addToBackStack(newFragment.getTag());
transaction.commit();
显示DetailFragment
,当我按下时,显示MenuFragment
,一切正常。
这是我的问题:
在DetailFragment
内,我有一个切换选项来过滤内容,这是一个按钮。单击此按钮后,DetailFragmentFiltered
将以与上述代码相同的方式替换DetailFragment
。唯一的区别是我没有将它添加到BackStack,因为在过滤并按Back后我仍然想要返回MenuFragment
。
当我点击过滤器按钮并按返回时,DetailFragment
(或DetailFragmentFiltered
)会显示在我的MenuFragment
后面。那么,我不想要这个。
答案 0 :(得分:4)
通过在布局中将第一个片段设置为“android:name”,确保不使用与XML的静态片段关系。
使用framelayouts制作XML的布局并灵活地添加片段,如本教程所示:
http://developer.android.com/training/basics/fragments/fragment-ui.html