迁移到 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()
至少有用,可以查看当前时间点甚至可用的内容。
迁移到 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()
至少有用,可以查看当前时间点甚至可用的内容。