Android嵌套片段片段交互

bco*_*rso 6 android android-fragments android-activity

用于片段片段交互的Android最佳实践(此处此处描述)强制Activity实现由子片段定义的侦听器.所述Activity然后管理片段之间的通信.

根据我的理解,这是为了保持碎片彼此松散耦合.然而,

  1. 嵌套片段也是如此吗?我可以想象,嵌套片段直接报告它的父片段而不是活动可能是有意义的.

  2. 如果嵌套片段的父片段实现了它的监听器,那么一个(或者应该一个)如何要求父片段执行此操作.换句话说,是类似于以下的范例,但是Fragments:

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    
        try {
            mCallback = (OnHeadlineSelectedListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnHeadlineSelectedListener");
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

小智 1

只要在片段中定义一个接口,就可以让父 Activity 或父片段实现它。没有规则规定片段不应实现子片段的接口。一个有意义的例子是片段 A 有两个子片段 B、C。A 实现了 B 的接口,当 A 收到回调时,它可能需要更新片段 C。与 Activity 完全相同,只是级别不同。