是 Android Fragments View 还是 ViewGroup
Posted
技术标签:
【中文标题】是 Android Fragments View 还是 ViewGroup【英文标题】:Are Android Fragments View or ViewGroup 【发布时间】:2016-01-10 07:16:26 【问题描述】:正如问题所述,android 中的 Fragments 是 View 或 ViewGroup。谁能解释一下
这里是来自docs的Fragment的onCreateView方法
public static class ExampleFragment extends Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
// Inflate the layout for this fragment
return inflater.inflate(R.layout.example_fragment, container, false);
传递给onCreateView()的
container
参数是父级 ViewGroup(来自活动的布局)您的片段布局 将被插入
和
要为您的片段绘制 UI,您必须从这里返回一个视图 作为片段布局根的方法。
【问题讨论】:
它不是 View 或 ViewGroup。它是一个 Object,它的一个属性是 ViewGroup。 啊碎片,开发中的第一个主要思维障碍,您编写的方法返回一个曾经放在屏幕上的视图。在幕后,Fragment 类处理容器参数是什么,(不要引用我的话,但我认为它与 FragmentTransaction 有关。)。 【参考方案1】:您不能将片段定义为视图或视图组。片段不止于此。可视化片段的最简单方法是将它们视为具有自己的 xml 外观、具有自己的生命周期回调的自己的行为的活动块。它们总是运行在 Activity 之上,您可以在运行时对它们执行添加、替换等操作。这样您就可以有效地在布局之间切换。
要了解onCreateView
方法,请考虑以下解释:
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)
View view =inflater.inflate(R.layout.example_fragment, container, false);
return view;
这将返回单个 View 对象,始终是 ViewGroup
,其中包含定义 Fragment 的 UI 的 View 对象集。 Activity
在 Fragment 提供其 UI 以供显示时调用此事件处理程序。
【讨论】:
【参考方案2】:fragment 是与主机活动生命周期相关的自定义视图的包装器。
【讨论】:
【参考方案3】:Fragment 是一种不占用全屏的 Activity,它可以将屏幕分割成多个 Fragment,因此非常适用于手机和平板电脑。
【讨论】:
是的,您对片段的使用是正确的。但我想知道它们是 View 还是 ViewGroup【参考方案4】:我认为不是,activity(fragment)控制视图显示什么,viewGroup扩展视图并实现ViewManger。只有Activity加载相关视图才能手机显示布局。Activity是一个组,视图可以在这个容器中正常工作
【讨论】:
【参考方案5】:两者都没有。 Fragment
是一个基类。
来自https://developer.android.com/guide/components/fragments.html
Fragment
代表用户界面的一个行为或一部分 一个活动
Fragment
包含一个字段:
// The View generated for this fragment.
View mView;
在onCreateView
中生成,实现:
@Nullable
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
Bundle savedInstanceState)
return null;
所以如果你想要一个Fragment
和一个View
然后@Override
那个方法。然后,如果您使用来自Activity
或嵌套Fragment
的适当片段事务,则可以向用户显示Fragment
。
【讨论】:
以上是关于是 Android Fragments View 还是 ViewGroup的主要内容,如果未能解决你的问题,请参考以下文章
Fragments的初识---不知道Fragments的不是合格的android开发
原因:android.view.InflateException: Binary XML file line #11: Error inflating class fragment
Android Fragment使用 嵌套Fragments (Nested Fragments) 的使用及常见错误
在 Android 中使用 Fragments 而不是 Views 有啥好处?
Android Fragment使用 嵌套Fragments (Nested Fragments) 的使用及常见错误
Android - android.view.InflateException: Binary XML file line #8: Error inflating class fragment