在学习了有关新架构组件的基础知识之后,我决定应用这些知识并进行一个演示项目。在这个项目中,我一直在使用Google Map。
在我的navHost片段中,其中一个片段以这种方式显示了Google地图
<fragment android:layout_width="match_parent" android:layout_height="match_parent"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"></fragment>
从我一直试图获取该片段类的代码中,相关代码看起来像这样
private val host: NavHostFragment? by lazyFast {
activity?.supportFragmentManager
?.findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment?
}
在onCreateView中,我尝试了
val mapFragment = host?.childFragmentManager?.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
它给了我这个错误
运行时异常:非null不能强制转换为null
有人知道我在做什么错吗?
答案 0 :(得分:3)
此错误与导航组件无关。例如,host?.childFragmentManager?.findFragmentById(R.id.map) as SupportMapFragment
实际上找到了一个嵌套的导航图。
如果您只想访问自己的子片段,则可以通过这种方式重构代码来完成
val mapFragment = this.childFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
希望有帮助