Потому что когда вы звоните по этой линии
return inflater.inflate(R.layout.frag_it_locate, container, false)
выйдет из метода onCreateView
и не выполнит все операторы после этой строки. Вот почему вы получаете UNREACHABLE CODE
ошибку.
Поэтому измените свой код на
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val mapFragment = childFragmentManager
.findFragmentById(R.id.map2) as SupportMapFragment
mapFragment.getMapAsync(this)
return inflater.inflate(R.layout.frag_it_locate, container, false);
}
Обновление: Вы получили эту ошибку, потому что эта строка.
val mapFragment = childFragmentManager
.findFragmentById(R.id.map2) as SupportMapFragment
Если findFragmentById(R.id.map2)
вернуть null
, ваше приложение упадет, потому что вы используете оператор Unsafe Cast
.
Вы можете предотвратить это с помощью оператора Smart Cast
.
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val mapFragment = childFragmentManager
.findFragmentById(R.id.map2) as SupportMapFragment?
mapFragment?.getMapAsync(this)
return inflater.inflate(R.layout.frag_it_locate, container, false);
}
Обновление 2: На основании вашего комментария о onMapReady
не вызывается.
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val mapFragment = childFragmentManager
.findFragmentById(R.id.map2) as SupportMapFragment?
if (mapFragment == null) {
mapFragment = SupportMapFragment.newInstance();
childFragmentManager.beginTransaction().replace(R.id.map2, mapFragment).commit();
}
mapFragment?.getMapAsync(this)
return inflater.inflate(R.layout.frag_it_locate, container, false);
}