0

这是场景:

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
}
4

0 回答 0