虽然Pragnani的答案是接近的,但它没有什么教育价值.此外,他的第二个声明有一个更合适的选择.
Where should I put this code in the fragment? In the onCreate()?
onCreateView()? onActivityCreated()? and why?
简单的答案是:onCreateView()或onActivityCreated()将会做.在onCreateView()之前,不会创建视图层次结构,所以这是片段生命周期中最早的一点,您可以充分利用视图和附加点击监听器等.Since onActivityCreated() will always be run after onCreateView()也是一个合适的位置. onCreate()可能被跳过,有利于系统临时分离片段并重新附加它,例如.当retaining fragments.
Pragnani是正确的,指出一个片段的意见膨胀与活动中的观点的膨胀略有不同.更具体地说:一个片段没有定义一个findViewById()方法,所以你需要在其他对象上调用它.
而不是使用getActivity().findViewById(),你需要getView().findViewById().原因是如果您使用视图查找的活动,那么当附加具有相同视图ID的多个片段时,您将遇到麻烦.如果您在各种片段的布局中重复使用视图ID,或者显示两个显示不同数据的相同片段,则会出现这种情况.在这两种情况下,只会返回第一场比赛,而您真的希望在片段的conext中查看视图.这正是07002返回的,片段的根视图(在onCreateView()中返回),从而适当地限制了查找的范围.