use*_*461 8 java android android-fragments fragmentmanager
我正在破坏以编程方式创建的片段:
getFragmentManager().beginTransaction().remove(getFragmentManager().findFragmentById(R.id.test)).commit();
Run Code Online (Sandbox Code Playgroud)
这是在xml文件中确定的,如下所示:
<LinearLayout
android:id="@+id/test"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
如果我然后在mainactivity中再次从同一个类创建一个片段:
getSupportFragmentManager().beginTransaction()
.add(R.id.result_bar, testinstance)
.commit();
Run Code Online (Sandbox Code Playgroud)
然后onCreate似乎没有被再次调用(片段只是空的).我在这做错了什么?谢谢.
FrameLayout:根据关于Commons Layouts的Google文档和这个答案,LinearLayout,RelativeLayout和AbsoluteLayout之间有什么区别?中,ViewGroup为s LinearLayout,RelativeLayout,AbsoluteLayout (decrepated) ,TableLayout等被允许显示的观点:
FrameLayout通过重叠另一个显示视图.它通常用于包含布局:
"框架布局是Android开发人员用来组织视图控件的最简单,最有效的布局类型之一.它们的使用频率低于其他布局,因为它们通常只用于显示一个视图或重叠的视图.框架布局通常用作容器布局,因为它通常只有一个子视图(通常是另一个布局,用于组织多个视图).
"框架布局允许开发人员在框架布局中仅显示单个或多个UI元素,但每个元素将基于屏幕的左上角定位,并且重叠的元素将显示为重叠."
Fragment呢?(vs LinearLayout或<fragment>)"FrameLayout旨在阻挡屏幕上的某个区域以显示单个项目."
FrameLayout将主持一个布局,它愿意.而其余ViewGroup的只是显示视图.你可以制作一个Fragment所有ViewGroup的(我测试过,这对我来说是一个惊喜),但它不是一个正确的方法来做到这一点.的FrameLayout是:
"...当您想要重叠视图时,选择正常的布局."
如果使用a创建布局<fragment .../>,则您的片段将不会被其他片段替换,因为它显示,它将在视图上"附加"其ID.要替换片段,您需要托管它:"通过将Fragment封装在FrameLayout中,您可以只替换细节"(请参阅此答案).
然后,请记住,FrameLayouts是空的,可以承载布局.Fragments(来自谷歌的片段文档,它非常简单地解释了如何使用片段的事实),当它们在xml中声明时,它们必须附加一个类(一个id),这是无法替换的.
这就是为什么我们需要一个容器来托管这个片段并重叠活动的视图!
希望这会有所帮助.
注意:如果有人想编辑这个答案,因为有些事情没有解释或解释不清楚,她/他可以尽心尽力.
| 归档时间: |
|
| 查看次数: |
4002 次 |
| 最近记录: |