Android ChildFragmentManager().findFragmentById()始终为null

Eri*_*wan 2 android android-fragments child-fragment

我偶然发现了一个疯狂的小"虫子",或者我只是做错了什么.我试图获取片段内部的片段的引用.所以我们有ParentFragment,这是一个孩子MainActivity.我可以毫无问题地获得对这个ParentFragment的引用,因为它ParentFragment被添加到MainActivityvia代码中:

ParentFragment fragment = new ParentFragment();

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

transaction.replace(R.id.fragmentPlaceholder, fragment);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)

我已经像这样ChildFragmentParentFragmentvia XML中添加了一个:

parent_fragment.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>
Run Code Online (Sandbox Code Playgroud)

一切正常,ChildFragment出现在ParentFragment中.唯一的事情是; 我找不到fragmentById.

我已经尝试了多种方法来实现这一点,应该如何完成(?):

getChildFragmentManager().findFragmentById(R.id.childFragment1)
Run Code Online (Sandbox Code Playgroud)

没工作.此外,获取活动并使用该片段管理器不起作用(当然).

我也试过在ChildFragmentManager中获取所有片段,迭代它们等等.但是这总是返回null:

getChildFragmentManager().getFragments()
Run Code Online (Sandbox Code Playgroud)

你知道为什么会这样吗?如果没有通过代码添加片段,我不能使用ChildFragrentManager吗?

谢谢!

mar*_*inj 5

您必须动态添加子片段.看到这里:

注意:当布局包含<fragment>时,您无法将布局扩展为片段.仅在动态添加到片段时才支持嵌套片段.

PS.如果你打算使用嵌套片段然后准备好各种奇怪的行为,你可以在bug平台上找到它们到android平台:

https://code.google.com/p/android/issues/list?can=2&q=nested+fragment&sort=-opened&colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&cells=tiles