布局中的片段占位符

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>

【讨论】:

以上是关于布局中的片段占位符的主要内容,如果未能解决你的问题,请参考以下文章

text 占位符和条件布局的模板代码

占位符可见总是假的

将占位符文本添加到文本字段时,iOS 7 中的应用程序崩溃

安卓编程资源文件string中对占位符的使用详解

从本地化中排除占位符文本

销毁 2 个 UITextViews 中的占位符