之间有什么区别
getActivity().findViewById(...)
和
View view = inflater.inflate(R.layout.fragment_fragment_v, null);
view.findViewById(...)
片段中的(将活动转换为片段时)?
答案 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.