我最近一直在处理片段,我只是好奇使用对片段父活动的引用的最佳实践是什么。继续调用 getActivity() 还是在 onActivityCreated 回调上初始化 parentActivity 变量会更好。
问问题
14430 次
3 回答
21
这实际上包含在 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 ");
}
}
...
}
于 2012-10-29T05:19:01.110 回答
9
getActivity() 是最好的。您无需维护要存储的变量(始终,直到应用程序循环!)。如果需要,调用该方法并使用!:)
于 2012-10-29T05:14:28.530 回答
-1
如果您在从某个活动调用的片段中,要获取对父活动的引用,您可以在 onViewCreated() 或片段的后续挂钩方法中直接调用它,这只是为了确保父活动不为空
getActivity()
如果你真的想确定你需要先检查
if (getActivity() != null){ // then your logic with getActivity()}
于 2016-11-22T01:40:22.950 回答