我最近一直在使用片段工作很多,我只是对使用对片段的父活动的引用的最佳实践感到好奇。继续调用getActivity()或在onActivityCreated回调上初始化parentActivity变量会不会更好。
答案 0 :(得分:19)
这实际上包含在Fragments上的官方Android文档中。当您需要父活动的上下文(例如Toast,Dialog)时,您可以调用getActivity()
。当您需要在Fragment接口中调用回调方法时,您应该使用在onAttach(...)
中实例化的回调变量。
public static class FragmentA extends ListFragment {
ExampleFragmentCallbackInterface mListener;
...
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mListener = (ExampleFragmentCallbackInterface ) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement ExampleFragmentCallbackInterface ");
}
}
...
}
答案 1 :(得分:8)
getActivity()是最好的。您无需维护要存储的变量(始终,直到应用程序循环!)。如果需要调用方法并使用! :)
答案 2 :(得分:-3)
如果您在某个活动中调用的片段中,要获取对父活动的引用,您可以在onViewCreated()内部调用它,或者稍后直接挂钩片段的方法,这只是为了确保父活动是不为空
getActivity()
如果您想确实需要先检查
if (getActivity() != null){ // then your logic with getActivity()}