我在我的應用程式中使用 FusedLocationProviderClient 并且它可以很好地獲取用戶當前位置但突然我遇到了這個崩潰
java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter location
這是我在活動中定義它的方式
private lateinit var fusedLocationClient: FusedLocationProviderClient
//
fusedLocationClient =
LocationServices.getFusedLocationProviderClient(this)
// 崩潰發生在 (addOnSuccessListener) 上的下一個代碼上
fusedLocationClient.lastLocation
.addOnSuccessListener { location ->
lat = location.latitude
lng = location.longitude
goToLocationOnMap(LatLng(lat, lng))
}
uj5u.com熱心網友回復:
這Task.OnSuccessListener是一個沒有引數可空性注釋(或)的Java 類。因此,Kotlin 無法確定該型別是可為空的還是不可為空的,并且編譯器不會抱怨(例如,代替)的不安全使用。@NotNull@Nulllocationlocation.latitudelocation?.latitude
null根據檔案,該位置有 3 種可能的情況:
- 位置在設備設定中已關閉。即使先前檢索到最后一個位置,結果也可能為空,因為禁用位置也會清除快取。
- 該設備從未記錄其位置,這可能是新設備或已恢復出廠設定的設備的情況。
- 設備上的 Google Play 服務已重新啟動,并且沒有活動的 Fused Location Provider 客戶端在服務重新啟動后請求位置。
總結:顯式宣告可空性并處理空場景 .addOnSuccessListener { location: Location? -> /* null-safe code here */ }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/407753.html
標籤:
上一篇:座位預訂
