如何理解片段?

时间:2016-07-17 03:21:03

标签: java android android-fragments

所以我重写了它。 问题是:

  1. 如果在xml中声明片段,则无法在其上调用替换。为什么呢?

  2. 如果要将片段放入FrameLayout(id,frame_layout),则调用 添加(R.id.frame_layout,片段)将导致"没有查看存在错误"。通过调用 add(android.R.id.content,fragment)可以解决这个问题。 问题是,如果R.id.frame_layout不是您活动的基本布局怎么办?

  3. 此外,在动态片段调度(使用替换和添加)中,也许只有一个容器可以包含一个片段而不是两个?

1 个答案:

答案 0 :(得分:1)

我浏览了很多......

Q1。如果片段是在xml中声明的,那么你就不能在它上面调用replace。为什么?

因为那是一个静态片段。 Android系统总是会坚持下去。无法删除或替换它。任何新的片段都会添加"或"替换"在相同的id上将放在彼此之上。

Q2如果要将片段放入FrameLayout(id,frame_layout),则调用add(R.id.frame_layout,fragment)将导致" No View exists错误"。通过调用add(android.R.id.content,fragment)可以解决这个问题。问题是,如果R.id.frame_layout不是您活动的基本布局怎么办?

事实并非如此。视情况而定。一般来说,函数调用中的id" add(id)"仅表示片段的容器或要由片段替换的视图。 android.R.id.content表示活动中视图的buttom层。

另外,在动态片段分派(使用替换和添加)中,也许只有一个容器可以包含一个片段而不是两个?

嗯,这取决于。仅为了清晰起见(如果您希望同事了解您的代码),确保只有一个容器包含一个片段是一个很好的习惯。那个动态片段,而不是静态片段的规则。