这是场景:
1)以 开头FragmentA
,其中包含一个谷歌地图片段,相机被移动到用户的 GPS 位置
2)用户切换到FragmentB
,其中有一个 Place Autocomplete Fragment 我抓取用户输入的位置
3)单击 中的按钮后FragmentB
,它会切换回 Fragment A,并且应该将相机位置移动到用户输入的地址FragmentB
问题:
lateinit property mMap has not been initialized
尝试从 更改FragmentA
相机位置时出现错误FragmentB
。但我认为由于 FragmentA 已经加载,mMap 仍然会被初始化。当我在我的片段(按钮导航栏)之间切换时,它会保持片段的状态,所以我知道它没有被破坏。
片段B
val button = view.findViewById(R.id.button_register) as Button
button.setOnClickListener{
Log.d(TAG, "Clicked")
val dialog = SuccessDialog()
dialog.show(fragmentManager, "success dialog")
mFragmentNavigation.clearStack()
bottomBar.selectedItemId = R.id.nav_map
mFragmentNavigation.switchTab(0)
FragmentA().mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(searchedLocation, 12f))
片段A
class FragmentA: BaseFragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListener {
lateinit var mMap: GoogleMap
.
.
.
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
checkPermission()
try {
val success = googleMap.setMapStyle(
MapStyleOptions.loadRawResourceStyle(
activity, R.raw.style_json
)
)
if (!success) {
Log.e(TAG, "Style parsing failed.")
}
} catch (e: Resources.NotFoundException) {
Log.e(TAG, "Can't find style. Error: ", e)
}
// location stuff
mMap.uiSettings.isZoomControlsEnabled = true
mMap.setOnMarkerClickListener(this)
mMap.uiSettings.isMapToolbarEnabled = false
}