14

我最近一直在处理片段,我只是好奇使用对片段父活动的引用的最佳实践是什么。继续调用 getActivity() 还是在 onActivityCreated 回调上初始化 parentActivity 变量会更好。

4

3 回答 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 回答