2017-07-28 6 views
0
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:Kotlin mit Karte in Android

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) 

auf dieser Linie wird der Fehler zeigt:

mapFragment= fragmentManager.findFragmentById(R.id.map) as SupportMapFragment 
+0

initialisiert hat der fragmentManager –

+0

seine getFragmentManager Methode direkt –

Antwort

2

Sie mapFragment nullable sein deklariert, so dass Sie mit ihm zu tun haben:

var mapFragment : SupportMapFragment?=null 
mapFragment = fragmentManager.findFragmentById(R.id.map) as SupportMapFragment? 
mapFragment?.getMapAsync(this) 
+0

verwendet wird, ja es für mich dank –

+0

Mit dieser Anwendung viel gearbeitet könnten Sie erklären 'mapFragment' ein' val' sein. Da Sie es nur einmal zuweisen, ist es sicherer, da es Sie daran hindert, es einem anderen Wert zuzuweisen. Die IDE wird Ihnen das wahrscheinlich sagen – Pelocho

0

Der Fehler impliziert dass Sie versuchen, null zu SupportMapFragment zu werfen. Daher ist es sicherer, den Typ zuerst zu überprüfen.

val mapFragment = fragmentManager.findFragmentById(R.id.map) 
if (mapFragment is SupportMapFragment) { 
    mapFragment.getMapAsync(this) 
}