片段占位符在布局中

时间:2012-03-07 10:26:04

标签: android android-layout android-intent android-fragments android-activity

假设我有几个片段

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代码中,膨胀一个占位符的适当片段?

是否有可能以及如何做到这一点?

2 个答案:

答案 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>