【问题标题】:Image path failed to store into Object class图像路径无法存储到 Object 类中
【发布时间】:2019-07-06 18:23:01
【问题描述】:

在片段 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

这里是活动结果

 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

【问题讨论】:

  • Image 类的外观如何?也许images.image 为空。请同时发布错误的logcat
  • 1.如果正在使用外部存储,您可以添加 Manifest Permissions 以及 John 吗? 2.val images = Image() 我相信如果图像 url 也是恒定的,那么它现在是恒定的,那么您将无法更改它,尝试使其成为 var,如果您当然可以在 @ 之前和之后记录此图像 url 987654333@
  • @gpunto images.image 为空。我该如何解决?
  • @HossamEldeenOnsy images.image 为空。
  • 您需要在将 urlpath 放入其中之前对其进行初始化,如下所示val images = Images() Like This --&gt; images.image = Image() &lt;-- Like This images.image?.url = path totalListImage.add(images)

标签: android kotlin camera mutablelist


【解决方案1】:

参考这段代码:

val images = Image()
images.image?.url = path
totalListImage.add(images)

并假设您的意思是val images = Images()(否则这个 sn-p 甚至不会编译),
那么问题是images.imagenull
那是因为Images 类的定义,你有var image : Image?=null

解决你一个问题:

  • 将类定义更改为具有非空默认值,例如:
var image : Image? = Image()
  • 或者在上面的sn-p中手动初始化,比如:
val images = Images()
images.image = Image()
images.image?.url = path
totalListImage.add(images)

【讨论】:

    猜你喜欢
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多