片段,通过设计,旨在帮助您再利用屏幕空间,因此,碎片必须存在一个容器内的一个工具。因此,尽管片段在技术上不能成为根视图,但您可以让片段成为Activity内唯一的视图。为此,您应该在片段的onCreateView()方法内以编程方式夸大片段的视图。那么你可以在你的活动的布局XML是这样的:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frame_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.package.fragment_name
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
然后,你的活动范围内,所有你需要做的是:
setContentView(R.layout.main);
因为,该片段在布局定义xml,它不能从活动的布局中移除(尽管布局本身可以改变)并且与它相关联。
此外,请注意,根视图是FrameLayout,而不是片段本身。但以这种方式,你的片段可以与活动联系在一起。但不要忘记,片段仍然保留与活动分开的生命周期。
编辑:如果您需要以编程方式创建片段的实例,你要做的:
getFragmentManager().beginTransaction().add(R.id.frame_layout, your_fragment).commit();
这是编程方式添加您的片段的唯一途径。但是请记住,Fragment的布局与活动的布局没有关系。但是你可以使用Fragment的生命周期来表现与Activity类似的行为。
正如我在问题中写的,我必须以编程方式创建片段实例。 –
编辑答案。如果您仍然遇到错误,您可以发布logcat吗?代码看起来不错。 – ucsunil
它工作正常。谢谢,这正是我所需要的。 –