在android中使用片段和框架布局有什么区别?两者可以互换使用吗?

在android中使用片段和框架布局有什么区别?两者可以互换使用吗?,android,android-layout,android-fragments,android-framelayout,Android,Android Layout,Android Fragments,Android Framelayout,我见过一种方法,在片段的情况下使用frameLayout。最终的目标是拥有多个片段。框架布局、相对视图和其他一些视图代表android中的一个视图,并从viewgroup扩展而来 片段是用于表示用户界面的一部分的对象,通常托管在活动中 片段有一个视图组,您可以为其分配XML布局。如果希望在片段中表示视图组的布局,可以在XML中指定一个视图组,该视图组可以是framelayout 片段和框架布局不能互换使用 话虽如此,您可以创建一个Android应用程序,而无需使用片段,只需使用viewgroup

我见过一种方法,在片段的情况下使用frameLayout。最终的目标是拥有多个片段。

框架布局、相对视图和其他一些视图代表android中的一个视图,并从viewgroup扩展而来

片段是用于表示用户界面的一部分的对象,通常托管在活动中

片段有一个视图组,您可以为其分配XML布局。如果希望在片段中表示视图组的布局,可以在XML中指定一个视图组,该视图组可以是framelayout

片段和框架布局不能互换使用


话虽如此,您可以创建一个Android应用程序,而无需使用片段,只需使用viewgroups即可。

要在屏幕上立即显示单个片段,可以互换使用片段或FrameLayout

单个片段,方法1 在XML中,通过片段标记显示片段的方式如下所示:

<fragment class="com.example.ExampleFragment"
        android:id="@+id/details" android:layout_weight="1"
        android:layout_width="0px" android:layout_height="match_parent" />
<FrameLayout android:id="@+id/details" android:layout_weight="1"
            android:layout_width="0px" android:layout_height="match_parent" />
多个片段 然后,方法2支持通过运行更多Java代码来更改后面显示的片段:

Fragment secondFragment = new SecondExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.details, secondFragment);
transaction.addToBackStack(null);
transaction.commit();

所以FrameLayout为您提供了额外的功能,可以使用fragment标记来完成这项工作。

Hmm,这就解决了我的疑问。今天,我在XML文件中使用了fragmentManager,然后在java文件中使用了fragmentManager部分。UI中有重复,现在我明白了原因。
Fragment secondFragment = new SecondExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.details, secondFragment);
transaction.addToBackStack(null);
transaction.commit();