android - Android kotlin.TypeCastException: null 不能转换为非 null 类型 com.google.android.gms.maps.SupportMapFragment
问题描述
我正在尝试在 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 不能在 com.example.nrice.mapsproject.MapsActivity.onCreate(MapsActivity.kt:38) 处转换为非空类型 com.google.android.gms.maps.SupportMapFragment
解决方案
尝试这个
val mapFragment = childFragmentManager.findFragmentById(R.id.map_frag) as SupportMapFragment
mapFragment.getMapAsync(this)
推荐阅读
- angular - Angular html不会将数据传递给组件
- arrays - 如何在反应中推送 JSON 对象数组中的项目?
- numpy - 运行 Kmeans 时如何解决“异常:数据必须是一维”错误
- c++ - 如何使用鼠标滚轮修复放大和缩小?
- c++ - 我们可以将非类纯右值 const 转换为 xvalue 吗?
- ruby-on-rails - 如何修复在我邪恶的向导第一步中没有发生的“验证”
- ios - 带委托的初始化:没有更多上下文的表达式类型不明确
- android - 如何从现在开始以字符串形式获取 12 小时时间格式的时间?
- c - 如何修复“对 createList 的未定义引用”
- javascript - Chart.js v2 - 如何在工具提示中设置依赖于数据集的日期格式