web-dev-qa-db-fra.com

Android kotlin.TypeCastException: nul ne peut être converti en type non nul com.google.Android.gms.maps.SupportMapFragment

J'essaie de coder mon application actuelle dans Kotlin, mais j'obtiens null ne peut pas être converti en type non nul. J'ai essayé beaucoup de choses différentes, mais je reçois toujours le même problème. Je ne sais pas quoi faire. Toute aide serait appréciée!

Code:

class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

private lateinit var mMap: GoogleMap
private lateinit var button: Button

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_maps)

    val mapFragment = supportFragmentManager
            .findFragmentById(R.id.mapFragment) as SupportMapFragment
    mapFragment.getMapAsync(this)
}

override fun onMapReady(googleMap: GoogleMap) {
    mMap = googleMap;
    setUpMap();
}

fun setUpMap() {

    val et = findViewById<EditText>(R.id.editText);
    val et2 = findViewById<EditText>(R.id.editText2);
    val lat = et.getText().toString().toDouble();
    val lng = et2.getText().toString().toDouble();
    //val ll = LatLng(lat, lng)

    button = findViewById(R.id.button) as Button
    button.setOnClickListener {
        goToLocation(lat, lng, 11.0f);
    }
}

fun goToLocation(lat:Double, lng:Double, zoom:Float) {
    val ll = LatLng(lat, lng);
    val update = CameraUpdateFactory.newLatLngZoom(ll, zoom);
    mMap.addMarker(MarkerOptions().position(ll).title("Marquette, Michigan"))
    mMap.moveCamera(update);
}

XML:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:paddingBottom="16dp"
Android:paddingLeft="16dp"
Android:paddingRight="16dp"
Android:paddingTop="16dp"
tools:layout="@layout/activity_maps">

<EditText
    Android:id="@+id/editText"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:ems="10"
    Android:inputType="textPersonName" />

<EditText
    Android:id="@+id/editText2"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:ems="10"
    Android:inputType="textPersonName" />

<Button
    Android:id="@+id/button"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:text="Submit"/>
    <!-- Android:onClick="locate"/> -->

<fragment
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:name="com.google.Android.gms.maps.SupportMapFragment"
    Android:id="@+id/mapFragment"
    />

Journaux:

Provoqué par: kotlin.TypeCastException: null ne peut pas être converti en type non nul com.google.Android.gms.maps.SupportMapFragment at com.example.nrice.mapsproject.MapsActivity.onCreate (MapsActivity.kt: 38)

6
Nate
val mapFragment = supportFragmentManager.findFragmentById(R.id.mapFragment) as? SupportMapFragment
mapFragment?.getMapAsync(this)

Pour référence, vous devriez lire this

1
Mauro Curbelo