布局中的片段占位符
Posted
技术标签:
【中文标题】布局中的片段占位符【英文标题】:fragment placehoder in layout 【发布时间】:2012-03-24 20:59:41 【问题描述】:假设我有几个片段:
public class FirstFragment extends Fragment ...
public class SecondFragment extends Fragment ...
public class ThirdFragment extends Fragment ...
我还有一个主要的activity,它的内容是(main.xml
):
<LinearLayout ...>
<!-- How to have a fragment placehold without specify which fragment show here? -->
<fragment>
</LinearLayout>
我的问题是,在上面的布局文件中,如何在不指定此处显示哪个片段的情况下定义 片段占位符,然后在我的活动 java 代码中,膨胀一个占位符的正确片段?
有没有可能,怎么做?
【问题讨论】:
【参考方案1】:这是可能的。 在您的 main.xml 中,为片段定义一个占位符,我们称之为“fragment_placeholder”:
<LinearLayout ...>
<FrameLayout android:id="@+id/fragment_placeholder" android:layout_weight="1"
android:layout_
android:layout_ />
</LinearLayout>
在您的活动中,每当您想加载片段时:
YourFragment fragment = new YourFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_placeholder, fragment);
ft.commit();
【讨论】:
ft.replace(...) 在我的情况下应该更改为 ft.add(...)。 查看更多信息:developer.android.com/training/basics/fragments/…【参考方案2】:您也可以使用FragmentContainerView。来自文档:
FragmentContainerView 是专为 片段。它扩展了 FrameLayout,因此它可以可靠地处理 Fragment 交易,并且它还具有其他功能来协调 片段行为。
示例(也来自文档):
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fragment_container_view"
android:layout_
android:layout_>
</androidx.fragment.app.FragmentContainerView>
【讨论】:
以上是关于布局中的片段占位符的主要内容,如果未能解决你的问题,请参考以下文章