从内部片段访问外部片段

时间:2014-05-06 10:58:12

标签: android android-fragments

我需要从内部片段访问外部片段,以便可以将回调发送到外部片段。我目前的内部片段代码是这个

 @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

        if (!(activity instanceof PageFragmentCallbacks)) {
            throw new ClassCastException("Activity must implement PageFragmentCallbacks");
        }

        mCallbacks = (PageFragmentCallbacks) activity;
    } 

当片段在活动中并且活动实现PageFragmentCallbacks时,这是有效的。我需要让外部Fragment实现PageFragmentCallbacks。

现在要在嵌套片段类中进行此操作,我需要访问外部片段。我如何从内部片段中获取外部片段?

1 个答案:

答案 0 :(得分:2)

使用getParentFragment()方法获取父级(如您所说的那样)片段(如果存在)。

因此,在onAttach方法中,您可以检查父片段是否为空。并检查它是否实现了Callbacks,就像你使用activity一样。

<强>更新 实施例

     @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);

            if (activity instanceof PageFragmentCallbacks) {
                         mCallbacks = (PageFragmentCallbacks) activity;
            }
else if (getParentFragment()  instanceof PageFragmentCallbacks) {
                   mCallbacks = (PageFragmentCallbacks) getParentFragment();
            }
        }

如果需要,您还可以为getParentFragment()。getParentFragment()添加一个其他