这是场景:
1)从FragmentA
开始,其中包含Google Maps片段,摄像头已移至用户的GPS位置
2)用户切换到FragmentB
,其中有一个地方自动填充片段,我可以在其中抓住用户输入的位置
3)单击FragmentB
中的按钮后,它将切换回Fragment A,并将摄像机位置移至用户从FragmentB
输入的地址
问题:
lateinit property mMap has not been initialized
更改FragmentA
的摄像机位置时,出现FragmentB
错误。但是我认为,由于FragmentA已经加载,因此mMap仍将被初始化。当我在片段之间切换时(按钮导航栏),它保持片段的状态,所以我知道它没有被破坏。 FragmentB
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))
FragmentA
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
}