2017-04-04 72 views
-1

我正在使用通过接口进行通信的嵌套片段。在过去,在那里我有以下片段嵌套在一个活动,我做了这样的事情:检查父代片段是否实现接口

ChildFragment.java

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    try { 
     _mOnImageAvailableListener = (OnImageAvailableListener) context; 
    } catch (ClassCastException e) { 
     throw new ClassCastException(context.toString()+" must implement onImageAvailable"); 
    } 
} 

但是,如果ChildFragment.java嵌套在ParentFragment .java,我该如何确保ParentFragment.java implements OnImageAvailableListener

回答

1

您可以使用方法getParentFragment()。就像这样:

if (getParentFragment() instanceOf OnImageAvailableListener){ 
//do something 
} else { 
//throw an exception 
} 
+0

'getParentFragment()''返回null' – Carpetfizz

+0

将它移动到' onActivityCreated()'方法或'onViewCreated()' –

+0

仍然返回'null' – Carpetfizz

1

ChildFragment.java直接用在你的活动中,比如回调。

想想你的活动随时随地把这段代码就像按一下按钮..

 FragmentManager fm = getSupportFragmentManager(); 
    ChildFragment childFragment= new ChildFragment(); 
    childFragment.show(fm, "Select Position"); 

在你ChildFragment.java创建接口及连接活动的样子。

private InterfaceName faceName; 

public interface InterfaceName { 
    void setPosition(int position); 
} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    Activity activity; 
    if (context instanceof Activity) { 
     activity = (Activity) context; 
     try { 
      faceName= (InterfaceName) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() 
        + " must implement Listener"); 
     } 
    } 
} 

最后在你的片段中回调。

faceName.setPosition(position, INDEX); 

器具ChildFragment.InterfaceName在你的活动,你会得到它的位置。

@Override 
public void setPosition(int position) { 

} 
1

在ParentFragment你应该使用getChildFragmentManager()而不是getFragmentManager()getActivity().getSupportFragmentManager()

比ChildFragment你可以做到这一点

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if(getParentFragment() instanceof OnImageAvailableListener) { 
     // cast and save it to instance variable.. 
    } 
} 
相关问题