我需要从内部片段访问外部片段,以便可以将回调发送到外部片段。我目前的内部片段代码是这个
@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。
现在要在嵌套片段类中进行此操作,我需要访问外部片段。我如何从内部片段中获取外部片段?
答案 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()添加一个其他