迁移到AndroidX后,findFragmentById对于片段返回null

时间:2019-02-05 19:37:13

标签: android android-fragments fragment androidx fragmentmanager

迁移到AndroidX后,当我尝试获取片段时,findFragmentById(也为findFragmentByTag)开始返回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() {
...
}

“活动”如下所示:

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)

都返回null。我也尝试只使用fragmentManager,结果为空  而且它仍然无法正常工作,因为它返回的是简单的片段,而不是androidx一个。

谢谢您的建议

1 个答案:

答案 0 :(得分:1)

类似于fm.getFragments().get(0)fm.getFragments().get(1)的索引访问可能会起作用。

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

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