如何在程序中动态添加片段而无需使用XML

3

我有一个没有xml布局的活动。现在我要通过以下方式将一个片段添加到活动中:

protected void onCreate(Bundle savedInstanceState) {
    profileFragment = new ProfileFragment();
    getSupportFragmentManager().beginTransaction().add(android.R.id.content, profileFragment).commit(); 
}

首先,我不知道什么是R.id.content,因为我没有声明它,那么它从哪里来的?

其次,我该如何将下面的两个片段添加到活动中,并将它们放置在我想要的位置,而不需要xml布局来定义主活动(第一个片段在顶部,下面的两个片段并排显示)?


你不想使用XML布局的原因是什么?因为它是最简单的方式。 - Ivo
因为这让我感到困惑:http://developer.android.com/training/basics/fragments/creating.html - "当您通过在布局XML文件中定义片段将片段添加到活动布局时,您无法在运行时删除该片段。如果您计划在用户交互期间交换片段,则必须在活动启动时将片段添加到活动中"。 - Iriminage
1
好的,我以为你的问题是你根本不想使用XML。例如,您可以在XML中创建一个仅包含空FrameLayout的布局。然后在代码中将片段添加到该XML布局中。 - Ivo
是的,现在我明白了。 - Iriminage
1个回答

3
首先,我不清楚R.id.content是什么,因为我没有声明它,那它从哪里来?
答:不是R.id.content而是android.R.id.content,它是框架的一部分。
其次,如何在不使用主活动xml布局的情况下将下一个2个片段添加到活动中并将其放置在所需位置(第一个片段在顶部,下一个2个片段在第一个片段下方并排放置)?
答:您可以通过编程方式创建片段的容器(需要告诉Android您希望在何处放置片段)。

那么,片段的占位符应该是什么呢?FrameLayouts? - Iriminage
如果您需要将两个片段并排放置,可以在水平LinearLayout内使用两个FrameLayout。 - Blackbelt
从技术上讲,您可以在代码中创建所有所需的FrameLayout和LinearLayout,并跳过使用xml文件,因此“您不能”部分并不真实。但是当然没有理由这样做。 - Ivo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接