在android中使用fragment和frameLayout有啥区别?两者可以互换使用吗?
Posted
技术标签:
【中文标题】在android中使用fragment和frameLayout有啥区别?两者可以互换使用吗?【英文标题】:What can be the difference of using a fragment and frameLayout in android? Can both be used interchangeably?在android中使用fragment和frameLayout有什么区别?两者可以互换使用吗? 【发布时间】:2017-09-14 10:49:54 【问题描述】:我看到了一种在片段的情况下使用 frameLayout 的方法。最终目标是拥有多个片段。
【问题讨论】:
【参考方案1】:为了在屏幕上立即显示单个 Fragment,是的,您可以互换使用 Fragment 或 FrameLayout。
单个片段,方法 1
通过片段标签显示片段在 XML 中如下所示:
<fragment class="com.example.ExampleFragment"
android:id="@+id/details" android:layout_weight="1"
android:layout_ android:layout_ />
单个片段,方法 2
通过 FrameLayout 显示片段在 XML 中如下所示:
<FrameLayout android:id="@+id/details" android:layout_weight="1"
android:layout_ android:layout_ />
后面是这样的Java代码:
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.details, newFragment);
transaction.addToBackStack(null);
transaction.commit();
多个片段
然后方法 2 支持通过运行更多 Java 代码来更改稍后显示的片段,以更改之后的片段:
Fragment secondFragment = new SecondExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.details, secondFragment);
transaction.addToBackStack(null);
transaction.commit();
因此 FrameLayout 为您提供了额外的能力,而不是使用片段标签。
【讨论】:
嗯,这解决了我的疑问。今天,我在 XML 文件中使用了framelayout、Relative View 和其他一些表示 android 中的视图,并且是从 viewgroup 扩展而来的。
片段是一个对象,用于表示用户界面的一部分,通常托管在活动中。
片段有一个视图组,您可以分配一个 XML 布局。如果您希望在片段中表示视图组的布局,您可以在 XML 中指定可以是框架布局的视图组。
片段和框架布局不能互换使用。
话虽如此,您可以在不使用片段的情况下创建 Android 应用程序,而只需使用视图组。
【讨论】:
以上是关于在android中使用fragment和frameLayout有啥区别?两者可以互换使用吗?的主要内容,如果未能解决你的问题,请参考以下文章
Fragment中获取Activity的方法进行fragment的切换
在android中使用fragment和frameLayout有啥区别?两者可以互换使用吗?
Android中Fragment和ViewPager那点事儿
如何在 Android 的 Fragment 中使用 setUserVisibleHint
Android 在 Fragment 中使用 getActivity() NullPointException 的思考和解决办法