迁移到 AndroidX 后片段的 findFragmentById returns null

findFragmentById returns null for fragment after migration to AndroidX

迁移到 AndroidX 后,findFragmentById(还有 findFragmentByTag)在我尝试获取片段时开始 returning null。

片段是这样添加到 XML 中的:

    <fragment
        android:id="@+id/id_fragment"
        android:tag="tag_fragment"
        android:name="com.blaa.MyFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

片段看起来像这样:

class MyFragment : androidx.fragment.app.Fragment() {
...
}

和 Activity 看起来像这样:

class MyActivity : AppCompatActivity(){
...
}

依赖项:

...
implementation "androidx.appcompat:appcompat:1.0.2"
implementation "androidx.legacy:legacy-support-v4:1.0.0"
implementation "com.google.android.material:material:1.1.0-alpha03"
...

下面是我在代码中的调用方式:

supportFragmentManager.findFragmentById(R.id.id_fragment)

supportFragmentManager.findFragmentByTag(R.id.tag_fragment)

两个 return 都为空。我也试过只使用 fragmentManager,结果为空 而且它无论如何都不会工作,因为它 return 是简单的片段,而不是 androidx 片段。

感谢任何建议

索引访问,类似于 fm.getFragments().get(0)fm.getFragments().get(1),可能有效。

如果没有...它可能无法找到它,因为它尚未添加(时间问题)。

fm.getFragments() 至少有用,可以查看当前时间点甚至可用的内容。