【问题标题】:Is there any alternative to nested Fragments?嵌套片段有什么替代品吗?
【发布时间】:2012-03-16 10:59:12
【问题描述】:

我读过应该避免嵌套片段(例如here),但我不知道如何执行以下操作:

我正在使用以下 UI 开发一个标签应用程序 (android:minSdkVersion="12"):

搜索栏始终在此处,用户可以浏览多个菜单选项(“主页”、“画廊”...)。我的想法是使用带有包含搜索栏和 FrameLayout 布局的 BaseActivity,我将在其中加载与用户导航选择相对应的 Fragment。

我的问题是,在“主页”片段中,我有几个选项卡,我想以相同的方式实现,即布局包含选项卡栏和 FrameLayout,我将在其中加载相应的片段,这会导致到嵌套的 Fragment...

我知道我可以使用多个活动来代替 BaseActivity,并在每个布局中包含搜索栏,但它会在用户每次更改活动时显示和消失...

编辑

我还需要一个固定的页脚,所以我不能使用 CommonsWare 在他的回答中提出的操作栏。

有人可以帮忙吗?

【问题讨论】:

    标签: android fragment


    【解决方案1】:

    有嵌套片段!!!!!!!在新的支持库版本中(支持库 v4,版本 11)

    【讨论】:

      【解决方案2】:

      您可以为此使用 ViewPager 和 FragmentPagerAdapter。 ViewPager 允许用户在视图或(在您的情况下)Fragments 之间滑动。要显示 tablike 控件,请使用 ViewPagerIndicator。

      使用您描述的布局,而不是将 Fragment 加载到 FrameLayout 中,使用如下布局对其进行充气:

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
      
          <com.viewpagerindicator.TabPageIndicator
              android:id="@+id/viewpagerIndicator"
              android:layout_height="wrap_content"
              android:layout_width="match_parent" />
          <android.support.v4.view.ViewPager
              android:id="@+id/viewpager"
              android:layout_width="match_parent"
              android:layout_height="0dp"
              android:layout_weight="1" />
      
      </LinearLayout>
      

      接下来,将FragmentPagerAdapter 分配给您的 ViewPager,然后它将加载您的 Fragments。

      还可以查看my answer here。它给出了一个更详细的例子。但请注意,它扩展了 PagerAdapter,而不是您应该使用的 FragmentPagerAdapter。

      【讨论】:

        【解决方案3】:

        你不能在 BaseActivity 布局中做标签栏吗? 然后在 BaseActivity 布局中将是搜索栏、标签栏和片段框架。 如果您不想在某些片段中使用导航栏,您可以将可见性 View.GONE 设置为导航栏。

        【讨论】:

          【解决方案4】:

          我的想法是使用带有包含搜索栏和 FrameLayout 布局的 BaseActivity,我将在其中加载与用户导航选择相对应的 Fragment。

          如果您使用单独的活动,而不是试图将所有内容强制到单个活动中,您将不会得到嵌套的片段。

          【讨论】:

          • 但是有几个活动我不能把搜索框作为一个固定的标题,对吧?我需要将它包含到每个活动的布局中,并且每次我更改活动时都会重新加载它(即从 UI 的角度来看,它会消失并重新出现)。如果我为标签创建多个活动,同样的事情。
          • @jul:“但是对于一些活动,我不能将搜索框作为固定标题,对吧?” ——把它放在每个活动的顶部。更好的是,将其放在操作栏中。 “我需要将它包含到每个活动的布局中,并且每次我更改活动时都会重新加载它(即从 UI 的角度来看,它会消失并重新出现)”——是的。
          • 好的,我将检查是否可以根据我的搜索栏自定义操作栏。我也需要一个固定的页脚,所以如果我可以有两个操作栏并且可以自定义它们,我会使用它。谢谢。
          • @jul:你不能有两个操作栏。
          • 好的,看来我无法实现我想要的:固定页眉、固定页脚以及在主页、固定选项卡菜单中。
          【解决方案5】:

          好消息!!!! android 支持库版本 11 已经支持嵌套片段。 Support Package, revision 11 (November 2012)

          v4 支持库的更改:
              用户界面
                  添加了对嵌套片段类的支持。

          如何实现嵌套片段,来自android developer

          您现在可以在片段中嵌入片段。这对于您希望将动态且可重用的 UI 组件放入本身是动态且可重用的 UI 组件的各种情况很有用。例如,如果您使用 ViewPager 创建向左和向右滑动并占用大部分屏幕空间的片段,您现在可以将片段插入到每个片段页面中。

          这里有一些关键:getChildFragmentManager() 和 getParentFragment()

          【讨论】:

            猜你喜欢
            • 2020-06-20
            • 1970-01-01
            • 1970-01-01
            • 2023-03-07
            • 1970-01-01
            • 2022-11-10
            • 1970-01-01
            • 1970-01-01
            • 2010-12-13
            相关资源
            最近更新 更多