【问题标题】:replace fragments inside fragment displayed by the viewpager替换视图分页器显示的片段内的片段
【发布时间】:2012-11-23 10:43:19
【问题描述】:

请先看线框图http://i.imgur.com/dPAMA.png

我正在使用 ViewPager 在 FragmentActivity 中显示片段。 ViewPager 从附加的 FragmentPagerAdapter 中获取片段

mViewPager = (ViewPager) findViewById(R.id.view_pager);       
mAdapter = new HomePagerAdapter(getSupportFragmentManager());    
mViewPager.setAdapter(mAdapter);

假设 viewpager 有 3 个片段要显示,比如 Fragment1、Fragment2、Fragment3。 在上图中,“显示片段 1”是第一个片段的标题“片段 1”。这个片段是一个列表片段并显示一个列表。 Fragment2 和 Fragment3 有自己的内容要显示。当用户在屏幕上滑动时,ViewPager 将显示下一个片段“Fragment2”。

我想要的是,当单击列表中的项目(由 Fragment1 显示)时,Fragment1 应该完全替换为其他一些 Fragment,例如 Fragment4(这是不同的 Fragment,不会由附加的适配器返回)。当显示 Fragment4 时,操作栏应更改其内容。每当用户处理 Fragment4 和 onBackPress 或来自 ActionBar 的操作时,应再次显示带有列表的 Fragment1。同时 ViewPager 应该表现相同,即在滑动时,下一个片段(在我们的例子中是 Fragment2)将被显示。

基本上,我想获得与示例中相同的行为:

http://developer.android.com/training/basics/fragments/fragment-ui.html#Replace

在此示例中,ListFragment 直接显示在 FragmentActivity 中。我正在使用 ViewPager 显示 ListFragment。我想要上面示例中的相同功能,但在 ViewPager 显示的片段内部。这在 Android 4.2 发布之前很难实现。这个版本的android支持使用getChildFragmentManager()的嵌套片段所以,我看到了一些希望。

我在这方面尝试了很多天,还扫描了整个 stackoverflow 以查找与嵌套片段相关的问答,但没有得到我想要的。

那么,这有可能实现吗?如果是,那怎么办?

【问题讨论】:

    标签: android-fragments android-actionbar android-viewpager android-listfragment android-fragmentactivity


    【解决方案1】:

    这在 Android 4.2 之前是一个大问题,但现在嵌套片段似乎更容易,除了确保后退按钮有效。我在这里发布了我对您的问题的解决方案:https://stackoverflow.com/a/13925130/467509

    除了更改 ActionBar 之外,我的解决方案可以回答您提出的所有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-31
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      相关资源
      最近更新 更多