現在のアプリをKotlinでコーディングしようとしていますが、nullをnull以外の型にキャストできません。いろいろなことを試しましたが、同じ問題が何度も発生します。何をすべきかわからない。何か助けていただければ幸いです!
コード:
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"
/>
ログ:
原因:kotlin.TypeCastException:nullを非null型にキャストできませんcom.google.Android.gms.maps.SupportMapFragment at com.example.nrice.mapsproject.MapsActivity.onCreate(MapsActivity.kt:38)
val mapFragment = supportFragmentManager.findFragmentById(R.id.mapFragment) as? SupportMapFragment
mapFragment?.getMapAsync(this)
参考までに、 this をお読みください。