引用片段的父活动的最佳实践?

时间:2012-10-29 05:03:03

标签: android

我最近一直在使用片段工作很多,我只是对使用对片段的父活动的引用的最佳实践感到好奇。继续调用getActivity()或在onActivityCreated回调上初始化parentActivity变量会不会更好。

3 个答案:

答案 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 ");
        }
    }
    ...
}

Source

答案 1 :(得分:8)

getActivity()是最好的。您无需维护要存储的变量(始终,直到应用程序循环!)。如果需要调用方法并使用! :)

答案 2 :(得分:-3)

如果您在某个活动中调用的片段中,要获取对父活动的引用,您可以在onViewCreated()内部调用它,或者稍后直接挂钩片段的方法,这只是为了确保父活动是不为空

getActivity()

如果您想确实需要先检查

if (getActivity() != null){ // then your logic with getActivity()}