Путь к изображению не удалось сохранить в классе Object
Во фрагменте A я пытаюсь получить объект изображения с сервера и сохранить его в totalListImage
, Этот шаг работает отлично.
var totalListImage: MutableList<Image> = mutableListOf()
fun getWorkRequestImage() {
GlobalScope.launch(Dispatchers.Main) {
val request = WebApi.getImages(activity, obj?.id!!)
request?.images?.let {
for (i in it!!.iterator()) {
totalListImage?.add(i)
}
}
mImageListAdapter.notifyDataSetChanged()
}
}
В этом же фрагменте я разрешаю пользователю снимать изображение и сохранять захваченное изображение в totalListImage
,
Здесь на ActivityResult
var path = data?.getExtras()?.getString("bitmap")
if (path != null) {
Log.d(TAG,path)
val images = Image()
images.image?.url = path
totalListImage.add(images)
display()
}
Наконец, в методе отображения я хочу отобразить все URL. Но я получаю нулевой указатель на последнее захваченное изображение.
fun display() {
for (i in totalListImage) {
Log.d(TAG, i.image?.url)
}
}
Если я удаляю захваченное изображение, я получаю это
D/AFragment: https://xxx/image/633/1562424667277.png
D/AFragment: https://xxx/image/637/1562426838223.png
Путь к захваченному изображению подтверждается не нулевым, так как при его отображении я видел
D/AFragment: /data/user/0/xxxk/cache/images/1562437144046.png
Почему я не могу сохранить путь последнего изображения в images.image?.url
?
Картинки
class Images : Serializable {
@PrimaryKey
var id = ""
@Ignore
var image : Image?=null
}
Образ
@Parcelize
class Image(
@ColumnInfo(name = "image")
var url: String ? =null
) : Serializable,Parcelable
1 ответ
Ссылаясь на этот код:
val images = Image()
images.image?.url = path
totalListImage.add(images)
и предполагая, что вы имели в виду val images = Images()
(иначе этот фрагмент даже не скомпилируется),
тогда проблема в том, что images.image
является null
,
Это из-за определения Images
класс, где у вас есть var image : Image?=null
,
Чтобы решить вас либо:
- измените определение класса, чтобы оно имело ненулевое значение по умолчанию, например:
var image : Image? = Image()
- или вручную инициализируйте его в приведенном выше фрагменте, например:
val images = Images()
images.image = Image()
images.image?.url = path
totalListImage.add(images)