Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置活动';Android中的根视图是否为片段?_Android_Android Fragments_Android Activity - Fatal编程技术网

如何设置活动';Android中的根视图是否为片段?

如何设置活动';Android中的根视图是否为片段?,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,我有一个片段,我想将整个片段设置为我活动的根视图。我已经准备好了一切,我正在用编程的方式实例化我的片段。我试过(在我的活动中): 但我有一个空指针异常。换句话说,我怎样才能使我的片段像一个活动一样活动?我只针对ICS+,如果有什么不同,我不需要支持旧版本。试试这个 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceSt

我有一个片段,我想将整个片段设置为我活动的根视图。我已经准备好了一切,我正在用编程的方式实例化我的片段。我试过(在我的活动中):

但我有一个空指针异常。换句话说,我怎样才能使我的片段像一个活动一样活动?我只针对ICS+,如果有什么不同,我不需要支持旧版本。

试试这个

@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.all_lecturer_frag, container, false);

     ......

    return rootView;
   }
试试这个

@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.all_lecturer_frag, container, false);

     ......

    return rootView;
   }

根据设计,片段是用来帮助您重用屏幕空间的工具,因此,片段必须存在于容器中。因此,虽然从技术上讲片段不能是根视图,但您可以让片段成为活动内部的唯一视图。为此,您应该在片段的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>
由于片段是在布局xml中定义的,因此无法将其从活动的布局中删除(尽管布局本身可以更改),并与之绑定

另外,请注意,根视图是一个框架布局,而不是片段本身。但是通过这种方式,您的片段可以绑定到活动。但别忘了,片段仍将保持其生命周期与活动的生命周期分开

编辑:如果需要以编程方式创建片段实例,则必须执行以下操作:

getFragmentManager().beginTransaction().add(R.id.frame_layout, your_fragment).commit();

这是以编程方式添加片段的唯一方法。但也要记住,片段的布局与活动的布局无关。但是您可以使用片段的生命周期来表现类似于活动的行为。

根据设计,片段旨在成为帮助您重用屏幕空间的工具,因此,片段必须存在于容器中。因此,虽然从技术上讲片段不能是根视图,但您可以让片段成为活动内部的唯一视图。为此,您应该在片段的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>
由于片段是在布局xml中定义的,因此无法将其从活动的布局中删除(尽管布局本身可以更改),并与之绑定

另外,请注意,根视图是一个框架布局,而不是片段本身。但是通过这种方式,您的片段可以绑定到活动。但别忘了,片段仍将保持其生命周期与活动的生命周期分开

编辑:如果需要以编程方式创建片段实例,则必须执行以下操作:

getFragmentManager().beginTransaction().add(R.id.frame_layout, your_fragment).commit();

这是以编程方式添加片段的唯一方法。但也要记住,片段的布局与活动的布局无关。但是您可以使用片段的生命周期来表现类似于活动的行为。

但是我也需要在片段实例上设置一些属性。代码中的
[…]
部分实际上设置了我的属性。但我还需要在片段实例上设置一些属性。代码中的
[…]
部分实际上设置了我的属性。1)什么是R.layout.xxx?它是一个空的XML文件吗?2) 片段事务不会干扰“后退”按钮吗?1)可以是带有FrameLayout(匹配父对象)的空XML,id为您的\u根\u frame\u布局。尝试覆盖后退按钮(onBackPressed(){…})1)什么是R.layout.xxx?它是一个空的XML文件吗?2) 片段事务不会干扰“后退”按钮吗?1)可以是带有FrameLayout(匹配父对象)的空XML,id为您的\u根\u frame\u布局。尝试重写后退按钮(onBackPressed(){…}),正如我在问题中所写的,我必须以编程方式创建片段实例。编辑答案。如果您仍然收到错误,您可以发布日志吗?代码看起来很好。正如我在问题中所写的,我必须以编程方式创建片段实例。编辑答案。如果您仍然收到错误,您可以发布日志吗?否则代码看起来很好。