在片段的onCreateView
方法中,我曾经将膨胀后的布局存储在变量中,然后将后者传递给我在此膨胀后的findViewById
上调用View
的其他函数。
现在,我宁愿只返回膨胀的布局(我不存储它)。因此,我不会将任何值传递给调用findViewById
的其他函数。但是他们仍然叫findViewById
;怎么样?只需致电Objects.requireNonNull(getActivity()).findViewById
。
谈论片段,是否等效?例如:
答案 0 :(得分:1)
关于RAM或CPU消耗
直接浏览片段的视图会更快,因为您将搜索较浅的层次结构。这不关您的事,对您的表现影响不大。
就行为而言(第二种方式有风险吗?)
您不应使用getActivity()。findViewById()。片段应该是独立的,并直接而不是通过间接方式(例如getActivity())来管理其视图。由于findViewById()的工作方式,您还可能会引入一些细微的错误(这意味着它返回具有找到的指定ID的第一个视图)。
想象一下,您拥有与ViewPager页面相同的片段。使用getActivity()。findViewById()意味着您将仅引用ViewPager所引用片段的第一个实例(而不是其他页面)中的视图。另一个示例是当您在活动中具有一个ID为ID的View,而在Fragment中(更深层次)为一个具有相同ID的View。使用getActivity()。findViewById()将引用活动视图,而不是片段中的视图。