我正在用以下命令销毁以编程方式创建的片段:
getFragmentManager().beginTransaction().remove(getFragmentManager().findFragmentById(R.id.test)).commit();
像这样在xml文件中确定:
<LinearLayout
android:id="@+id/test"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
如果然后我在mainactivity中再次从同一类创建一个片段:
getSupportFragmentManager().beginTransaction()
.add(R.id.result_bar, testinstance)
.commit();
然后onCreate似乎不再被调用(该片段只是空的)。我在这里做错了什么?谢谢。
FrameLayout
:根据有关共用布局的Google文档以及LinearLayout,RelativeLayout和AbsoluteLayout有什么区别的答案?中,ViewGroup
为s
LinearLayout
,RelativeLayout
,AbsoluteLayout
(decrepated)
,TableLayout
等被允许显示的观点:
FrameLayout
通过 重叠 显示视图。通常用于 包含 布局:
“框架布局是Android开发人员用来组织视图控件的最简单,最有效的布局类型之一。与其他一些布局相比,它们的使用频率更低,原因仅在于它们通常仅用于显示一个视图或重叠的视图。框架布局通常用作容器布局,因为它通常只有一个子视图(通常是另一个布局,用于组织多个视图)。”
来源: FrameLayout
MobilTuts
“框架布局允许开发人员在框架布局中仅显示单个或多个UI元素,但是每个元素将基于屏幕的左上角放置,并且重叠的元素将重叠显示。”
来源: 绝对初学者的Android框架布局
Fragment
呢?(与LinearLayout或
FrameLayout的Google文档说:
“ FrameLayout旨在挡住屏幕上的某个区域以显示单个项目。”
FrameLayout
将托管一个 布局
,并且愿意这样做。其余ViewGroup
的仅显示视图。你可以做一个Fragment
在所有ViewGroup
小号
(我测试了一下,这是一个惊喜对我来说) ,但它不会以适当的方式来做到这一点。这些FrameLayout
是:
“ …当您要重叠视图时,通常选择的布局。”
如果您使用创建一个布局<fragment .../>
,则您的片段将不会被另一个替换,因为它会显示出来,因此它的ID将“附加”在视图上。要替换片段,您需要对其进行托管:
“通过将片段封装在FrameLayout中,您可以仅替换细节”
(请参见此答案)。
然后,请记住FrameLayout
s是空的,可以托管 布局 。Fragment
s(来自Google的Fragment
Documentation,它非常简单地说明了如何使用片段的事实),当它们在xml中声明时,它们必须具有一个附加的类(一个id),该类不能被替换。
这就是为什么我们需要一个 容器 来承载此片段并使活动视图 重叠 !
希望这会有所帮助。
注意:如果有人要编辑此答案,但由于无法解释或解释不正确,则可以由衷地进行。
我正在开发一个应用程序使用Android4.0IC和碎片。 考虑ICS4.0.3(API level 15)API的演示示例应用程序中的修改示例: }
具体问题是调用自定义arrayadapter的getView方法失败。我使用一个片段来显示一个列表。生成列表的活动允许从微调器中选择人员。然后,我使用所选人员的id从DB中检索数据。我将这些数据打包到指定给ArrayList的自定义holder对象中。以下是创建片段事务的活动代码。 片段正确地获取绑定的数据。onCreate方法和onCreateView方法执行正确。以下是onCreateView
问题内容: 我正在升级Android应用程序(1.6兼容性),该应用程序使用显示三个带有嵌套活动的不同选项卡。 当时,我使用技巧在选项卡中显示嵌套的活动,但是我对此方法感到非常不满意,因为处理某些功能确实很麻烦。 我听说过1.6版的Fragments API兼容性软件包,并且看起来非常适合我想做的事情(在带有过渡效果和内容的选项卡中显示嵌套视图/功能),但我无法使其与(这是为了与一起使用,但在兼容
我试图通过按特定顺序调用的片段实现反向导航:
Fragment 组件提供了用于减少不必要嵌套的组件。组件能够在不额外创建 DOM 元素的情况下,在 render() 方法中返回多个元素。更早的 Rax 版本已经对数组的返回进行了支持,Rax 1.0 采用了更为标准的方式。 示例 <Fragment> <header>A heading</header> <footer>A footer</footer> </Fragment> //
根据Android指南,http://developer.android.com/training/basics/fragments/communicating.html一个片段应该通过宿主Activity向另一个片段发送数据。我想知道这有什么原因。因为在我的代码中,我放置了一个变量来保存指向另一个片段的指针,并在onActivityCreated中赋值 后来,如果我想为FragmentType2