如何使用PagerAdapter替换ViewPager中的Fragment?

9

我的问题

我正在使用一个 ViewPagerFragmentActivity 中显示片段。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

我的问题

那么,这是否可以实现?如果可以,怎么做? 非常感谢您的帮助。Alex。 附言:对不起我的英语不好 :)


看看这个,在这种情况下它是一个解决方案。 - Kostya Khuta
3个回答

17

0

您需要进行片段事务,并将现有片段添加到返回堆栈中。 我创建了一个示例项目来向您展示如何操作。

该代码并不是经过优化的,我只是为了向您展示如何操作而创建它。

https://drive.google.com/folderview?id=0BxHClVwHSqq5dVRvT1Qyd0hYN0k&usp=sharing

请注意,即使您在任何视图页面屏幕上按返回键,前一个片段仍会显示,因为它是同一活动。

如果这不是预期的行为,则应考虑使用多个活动(例如选项卡布局)。


0
一种实现这个的方法是添加另一个FragmentActivity,用于显示你的Fragment4。使用Intent启动此活动并在Extra中发送网格项位置或其他数据。
按下返回按钮后,该活动将被结束,并显示最后一个带有视图分页器的活动。
[编辑]旧回答。其他答案提供了更好的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接