假设我有几个片段:
public class FirstFragment extends Fragment { ... }
public class SecondFragment extends Fragment { ... }
public class ThirdFragment extends Fragment { ... }
我还有一个主活动,其内容为(main.xml
):
<LinearLayout ...>
<!-- How to have a fragment placehold without specify which fragment show here? -->
<fragment>
</LinearLayout>
我的问题是,在上面的布局文件中,如何定义片段占位符而不指定此处显示的片段,然后在<我的活动java代码中,膨胀一个占位符的适当片段?
是否有可能以及如何做到这一点?
答案 0 :(得分:33)
有可能。 在main.xml中,为片段定义一个占位符,我们称之为“fragment_placeholder”:
<LinearLayout ...>
<FrameLayout android:id="@+id/fragment_placeholder" android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent" />
</LinearLayout>
在您的活动中,无论何时您想要加载片段:
YourFragment fragment = new YourFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_placeholder, fragment);
ft.commit();
答案 1 :(得分:0)
您也可以使用 FragmentContainerView。来自文档:
<块引用>FragmentContainerView 是一个定制的 Layout,专为 片段。它扩展了 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_width="match_parent"
android:layout_height="match_parent">
</androidx.fragment.app.FragmentContainerView>