【问题标题】: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 代码中,膨胀一个占位符的正确片段?

有没有可能,怎么做?

【问题讨论】:

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


    【解决方案1】:

    这是可能的。 在您的 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();
    

    【讨论】:

    【解决方案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_width="match_parent"
            android:layout_height="match_parent">
     </androidx.fragment.app.FragmentContainerView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多