我使用ViewPager
在FragmentActivity
内显示片段。 ViewPager从附加的FragmentPagerAdapter
获取片段。
mViewPager = (ViewPager) findViewById(R.id.view_pager);
mAdapter = new HomePagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAdapter);
假设ViewPager
有3个要显示的片段:Fragment1
,Fragment2
,Fragment3
。 Fragment1
是网格片段并显示网格。 Fragment2
和Fragment3
有自己的内容可供展示。
当用户在屏幕上滑动时,ViewPager
将显示下一个片段 - Fragment2
。等等。
我想要的是,当点击网格中的项目(由Fragment1
显示)时,Fragment1
应该被其他一些片段完全替换,比如说Fragment4
(这是不同的片段,并不是由附加的适配器返回)。用户将在Fragment4
上工作,在ButtonBack
点击后(只需按下Fragment4
按钮),应再次显示带有网格的Fragment1
。同时ViewPager
应该表现相同,即在滑动时,将显示下一个片段(在我们的例子中为Fragment2
)。
所以我只想获得与示例中相同的行为: http://developer.android.com/training/basics/fragments/fragment-ui.html#Replace
那么,这有可能实现吗?如果是,那该怎么办? 我非常感谢你的帮助。亚历克斯。 附:对不起我的英文:)
答案 0 :(得分:16)
答案 1 :(得分:0)
您必须执行片段事务并将现有片段添加到backstack中。 我创建了一个示例项目来向您展示如何操作。
代码未经过微调,我只是创建它以向您展示如何操作。
https://drive.google.com/folderview?id=0BxHClVwHSqq5dVRvT1Qyd0hYN0k&usp=sharing
但请注意,即使您在任何一个视图寻呼机屏幕上按回,前一个片段也会显示为同一个活动。
如果这不是预期的行为,那么您应该考虑改为使用多个活动(如标签布局)
答案 2 :(得分:0)
实现此目标的一种方法是添加另一个FragmentActivity
来显示您的Fragment4
。使用Intent
开始此活动,并在Extra
中发送网格项位置或其他数据。
按下后退按钮后,此活动将完成,并将显示带有查看寻呼机的最后一项活动。
[编辑]旧回应。其他答案中提供了更好的解决方案,