Kotlin function override null check

I try to get lastLocation of user and implemented the method like this.

getLocationClient()?.lastLocation?.addOnSuccessListener(object :
               OnSuccessListener<Location> {
           override fun onSuccess(loc: Location) {
               if (loc == null) return
              }
       })

But when I don't add null safety to parameter Location in onSuccess method, that causes some crashes when Location parameter is null.

When I add null safety to the parameter like in the image below, it doesn't override the method. I was able to override this method with null safety but something changed i guess.

enter image description here

How can i solve this problem ?


Solution 1:

The type parameter for OnSuccessListener needs to be nullable too, i.e. OnSuccessListener<Location?> instead of OnSuccessListener<Location>

getLocationClient()?.lastLocation?.addOnSuccessListener(object :
               OnSuccessListener<Location?> {
           override fun onSuccess(loc: Location?) {
               if (loc == null) return
              }
       })

BTW, you can also use the SAM syntax for a shorter way of doing the same thing:

getLocationClient()?.lastLocation?.addOnSuccessListener { loc: Location? ->
    if (loc == null) return
}