片段接口/侦听器可与活动一起使用,但不能与另一个片段一起使用

时间:2018-09-10 08:25:26

标签: android android-fragments

我有一个片段,里面也有两个片段。我正在尝试在父片段的两个片段中实现侦听器。但是,我遇到了一个错误

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof MyPostsUpdateListener) {
        myPostsUpdateListener = (MyPostsUpdateListener) context;
    } else {
        throw new RuntimeException(context.toString()
                + " must implement MyPostsUpdateListener");
    }
}

我已经用一个不同的侦听器以相同的方式实现了类似的功能,并且可以正常工作,但是在那种情况下,它是针对活动而不是父片段实现的。

对此有任何解决方法吗?因为我确定我已经以与其他活动相同的方式实现了它,唯一的区别是它是由活动实现的,在这种情况下,它是由片段实现的。

1 个答案:

答案 0 :(得分:4)

要将数据传递回父片段,您可以通过调用getParentFragment方法在子片段中获取父片段的实例。

public class ChildFragment extends Fragment {

    private void sendToParentFragment(String data) {
        Fragment fragment = getParentFragment();

        if (fragment instanceof MyPostsUpdateListener) {
            myPostsUpdateListener = (MyPostsUpdateListener) fragment;
            myPostsUpdateListener.onData(data);
        }
    }
}