【问题标题】:How to replace Fragment inside ViewPager, using PagerAdapter?如何使用 PagerAdapter 替换 ViewPager 中的 Fragment?
【发布时间】:2013-09-15 17:42:48
【问题描述】:

我的问题

我使用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

我的问题

那么,这有可能实现吗?如果是,那么怎么做? 非常感谢您的帮助。亚历克斯。 附言对不起我的英语:)

【问题讨论】:

标签: android replace android-fragments android-viewpager fragmentpageradapter


【解决方案1】:

我做了一个小例子来说明如何实现它:

https://github.com/danilao/fragments-viewpager-example

我认为重点是使用另一个片段作为容器。

【讨论】:

    【解决方案2】:

    实现此目的的一种方法是添加另一个FragmentActivity,以显示您的Fragment4。使用Intent 启动此活动并在Extra 中发送网格项位置或其他数据。

    按下后退按钮后,此活动将完成,并显示最后一个带有视图寻呼机的活动。

    [编辑] 旧响应。其他答案中提供了更好的解决方案,

    【讨论】:

      【解决方案3】:

      您必须进行片段事务并将现有片段添加到后台堆栈中。 我创建了一个示例项目来向您展示如何操作。

      代码没有微调,我只是创建它来告诉你如何去做。

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

      但请注意,即使您在任何视图寻呼机屏幕上按回,前一个片段最终也会显示,因为它是相同的活动。

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

      【讨论】:

        猜你喜欢
        • 2011-12-05
        • 2017-04-07
        • 2013-09-06
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 2013-02-25
        相关资源
        最近更新 更多