少しハマったのでメモ
やろうとしたこと
- Google Maps Activity のコードをそのまま新規FragmentにコピペしてMap表示するFragmentとして使う
ハマったこと
- "Unresolved reference: supportFragmentManager" というエラーが出る
対策
- supportFragmentManager から childFragmentManager に変更
対策前
Fragment.kt
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
}
対策後
Fragment.kt
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
val mapFragment = childFragmentManager //ここが変わっている
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
}
原因
- 階層ごとに呼び出すMapFragmentが違う
- Activity→Fragment:supportFragmentManager
- Fragment→子Fragment:childFragmentManager
公式ドキュメントはちゃんと見ないといけないよう