требуемый тип Ури нашел Ури? - PullRequest
0 голосов
/ 12 июля 2020

Я получаю сообщение об ошибке:

required type Uri 
found Uri?

Мой код: val imageUri = data? .Data val imageStream = contentResolver.openInputStream (imageUri) val selectedImage = BitmapFactory.decodeStream (imageStream) profile_page_pimage.setImageBitmap ( selectedImage)

Это сообщение об ошибке

Ответы [ 2 ]

3 голосов
/ 12 июля 2020

data?.data преобразуется в Uri или null. Kotlin рассматривает null как часть системы типов, поэтому выводимый тип - Uri? (? означает, что значение может быть null). Однако openInputStream() не поддерживает null. Итак, вам нужно проверить, является ли imageUri null, и, если это так, не пытайтесь его использовать.

Например, вы можете использовать безопасный вызов (?.) с let():

data?.data?.let { imageUri ->
  val imageStream = contentResolver.openInputStream(imageUri)
  val selectedImage = BitmapFactory.decodeStream(imageStream)
  profile_page_pimage.setImageBitmap(selectedImage)
}

Теперь, если вы не получили Uri от data?.data, вы не получите ошибку sh при попытке прочитать несуществующий контент.

1 голос
/ 12 июля 2020

Необходимо добавить отметку о нулевой безопасности !! , поэтому ваш код должен быть похож на ths

val imageStream = contentResolver.openInputStream(imageUri!!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...