我被一个疯狂的小“虫子”绊倒了,或者我只是做错了什么。我试图得到一个片段内的片段的引用。所以我们有了ParentFragment,那是MainActivity的一个孩子。我可以毫无问题地获得对这个parentfragment的引用,因为ParentFragment是通过代码添加到MainActivity的:

ParentFragment fragment = new ParentFragment();

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

transaction.replace(R.id.fragmentPlaceholder, fragment);
transaction.commit();

我已经通过XML向ChildFragment添加了一个ParentFragment,如下所示:
父碎片.xml
<RelativeLayout ... etc>
    .. some other views, findViewById('') works great on these.
    <fragment
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:id="@+id/childFragment1"
        android:tag="1"
        class="com.my.package.ChildFragment"
        android:name="com.my.package.ChildFragment"
        tools:layout="@layout/child_fragment" />
</RelativeLayout>

一切正常,子片段显示在父片段中。唯一的问题是,我找不到碎片。
我尝试过多种方法来实现这个目标,应该如何实现?:
getChildFragmentManager().findFragmentById(R.id.childFragment1)

不起作用。另外,获取活动并使用片段管理器也不起作用(…当然)。
我还尝试获取childfragmentmanager中的所有片段,并对它们进行迭代等,但这始终返回null:
getChildFragmentManager().getFragments()

你知道为什么会这样吗?如果片段不是通过代码添加的,我不能使用childfragrentmanager吗?
谢谢!

最佳答案

必须动态添加子片段。见AA>
注意:当布局为片段时,不能将其充气
包括一个。只有在添加时才支持嵌套片段
动态的碎片。
注意:如果您计划使用嵌套片段,然后准备好应对各种奇怪的行为,您可以在Android平台的错误报告中找到它们:
here

07-27 14:07