Kotlin在Android中使用Map
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View { var view: View = inflater?.inflate(R.layout.map_fragment, null)!! var mapFragment : SupportMapFragment?=null mapFragment= fragmentManager.findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) return view }
Logcat:
FATAL EXCEPTION: main kotlin.TypeCastException: null cannot be cast to non-null type com.google.android.gms.maps.SupportMapFragment at example.com.kotlinexamplebydimple.Mapfragment.onCreateView(Mapfragment.kt:36)
在这行上错误显示:
mapFragment= fragmentManager.findFragmentById(R.id.map) as SupportMapFragment
你声明mapFragment
是空的,所以你必须处理它:
var mapFragment : SupportMapFragment?=null mapFragment = fragmentManager.findFragmentById(R.id.map) as SupportMapFragment? mapFragment?.getMapAsync(this)
该错误意味着您尝试将一个null
投射到SupportMapFragment
。 因此,首先检查类型会更安全。
val mapFragment = fragmentManager.findFragmentById(R.id.map) if (mapFragment is SupportMapFragment) { mapFragment.getMapAsync(this) }