迁移到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一个。
谢谢您的建议
答案 0 :(得分:1)
类似于fm.getFragments().get(0)
或fm.getFragments().get(1)
的索引访问可能会起作用。
,如果没有...,可能无法找到它,因为尚未添加(计时问题)。
fm.getFragments()
至少对查看当前时间点可用的内容有用。