Fragment中getActivity()和视图之间的区别

时间:2015-04-21 18:07:29

标签: android android-fragments android-activity

之间有什么区别
getActivity().findViewById(...)

View view = inflater.inflate(R.layout.fragment_fragment_v, null);
view.findViewById(...)
片段中的

(将活动转换为片段时)?

2 个答案:

答案 0 :(得分:10)

getActivty.findViewById(...)不同的是,你在活动范围(活动的布局)中找到了视图。使用iflater.inflate(R.layout.fragment_fragment_v, null); view.findViewById(...),您将夸大片段的布局,然后在该布局中查找视图。

但是由于你的片段被附加到活动,你会发现视图,但我建议你在片段的范围内找到你的片段的视图,因为可能有几个片段有共同的布局,这意味着可能有几个视图与相同的ID相关联并使getActivity().findBiewById(...)方法不可靠

答案 1 :(得分:0)

当您使用findViewById致电getActivity()时,您告诉Android在View的布局中找到Activity,因为Fragments位于Activities内{1}}如果它位于层次结构中,它将返回正确的View

通过使用夸大的View或实际上框架提供的getView()方法调用findViewById,您实际上是在告诉Android在View视图层次结构中找到Fragment's ,这应该是您首选的方法,因为findViewById算法必须从较小的View集中查找您的View,因此搜索速度会更快。

我将从开发人员文档中了解有关getView()的解释。

getView()
Get the root view for the fragment's layout (the one returned by onCreateView(LayoutInflater, ViewGroup, Bundle)), if provided.