【问题标题】:How to add uri to an ArrayList in Kotlin?如何将 uri 添加到 Kotlin 中的 ArrayList?
【发布时间】:2021-09-12 00:31:09
【问题描述】:

我想以ArrayList<> 形式获取所有图像的URI。我没有得到我想要的结果。 Toast 显示 null

代码Toast.makeText( this@AddProductActivity,mSelectedImageFileUri.toString(),Toast.LENGTH_SHORT).show() 显示一些数据,而Toast.makeText( this@AddProductActivity,mSelectedImageFileUriList.toString(),Toast.LENGTH_SHORT).show() 显示null

这就是我所做的。有人可以帮我找出我的错误吗?

class AddProductActivity : BaseActivity(), View.OnClickListener {

    private var mSelectedImageFileUri: Uri? = null
    private var mSelectedImageFileUriList: ArrayList<Uri?>? = null


  override fun onClick(v: View?) {

        if (v != null) {
            when (v.id) {

                R.id.iv_add_update_product -> {
                    imageNumber1=1
                    if (ContextCompat.checkSelfPermission(
                            this,
                            Manifest.permission.READ_EXTERNAL_STORAGE
                        )
                        == PackageManager.PERMISSION_GRANTED
                    ) {
                        Constants.showImageChooser(this@AddProductActivity)
                    } else {
                       
                        ActivityCompat.requestPermissions(
                            this,
                            arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
                            Constants.READ_STORAGE_PERMISSION_CODE
                        )
                    }
                }

                R.id.iv_add_update_product2 -> {
                    if(iv_product_image.drawable!=null){
                        imageNumber2=1
                        if (ContextCompat.checkSelfPermission(
                                this,
                                Manifest.permission.READ_EXTERNAL_STORAGE
                            )
                            == PackageManager.PERMISSION_GRANTED
                        ) {
                            Constants.showImageChooser(this@AddProductActivity)
                        } else {
                           
                            ActivityCompat.requestPermissions(
                                this,
                                arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
                                Constants.READ_STORAGE_PERMISSION_CODE
                            )
                        }
                    }else{
                        Toast.makeText(this@AddProductActivity,"Please add image 1",Toast.LENGTH_SHORT).show()
                    }

                }
}

}



    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == Activity.RESULT_OK
            && requestCode == Constants.PICK_IMAGE_REQUEST_CODE
            && data!!.data != null
        ) {

            if (imageNumber1==1){
                imageNumber1=0
               
                iv_add_update_product.setImageDrawable(
                    ContextCompat.getDrawable(
                        this@AddProductActivity,
                        R.drawable.ic_vector_edit
                    )
                )

                mSelectedImageFileUri=data.data!!

                Log.i("URI_1 is ",mSelectedImageFileUri.toString())

                Toast.makeText( this@AddProductActivity,mSelectedImageFileUri.toString(),Toast.LENGTH_SHORT).show()

                mSelectedImageFileUriList?.add(data.data!!)

                Toast.makeText( this@AddProductActivity,mSelectedImageFileUriList.toString(),Toast.LENGTH_SHORT).show()

                try {
                  
                    GlideLoader(this@AddProductActivity).loadProductPicture(
                        mSelectedImageFileUri!!,
                        iv_product_image
                    )
                } catch (e: IOException) {
                    e.printStackTrace()
                }
            }

            if (imageNumber2==1){
                imageNumber2=0
               
                iv_add_update_product2.setImageDrawable(
                    ContextCompat.getDrawable(
                        this@AddProductActivity,
                        R.drawable.ic_vector_edit
                    )
                )

                mSelectedImageFileUri=data.data!!

                Log.i("URI_2 is ",mSelectedImageFileUri.toString())
                Toast.makeText( this@AddProductActivity,mSelectedImageFileUri.toString(),Toast.LENGTH_SHORT).show()

                mSelectedImageFileUriList?.add(data.data!!)

                Toast.makeText( this@AddProductActivity,mSelectedImageFileUriList.toString(),Toast.LENGTH_SHORT).show()

                try {
                  
                    GlideLoader(this@AddProductActivity).loadProductPicture(
                        mSelectedImageFileUri!!,
                        iv_product_image2
                    )
                } catch (e: IOException) {
                    e.printStackTrace()
                }
            }
}
}

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    您没有启动 ArrayList。

    在java中会这样

        List<Uri> mSelectedImageFileUriList=new ArrayList();
    
        in Kotlin
        val mSelectedImageFileUriList= ArrayList<Uri>()
        
         mSelectedImageFileUriList.add(yourUri);
        
         Toast.makeText( this@AddProductActivity,String.valueOf(mSelectedImageFileUriList.get(0)),Toast.LENGTH_SHORT).show();
    

    【讨论】:

    • 我经历了它,但我找不到我的错误。您在我的代码中发现了什么错误?
    • "mSelectedImageFileUriList: ArrayList? = null" >您需要启动,否则您无法将 uri 添加到列表中。这就是您在 Toast.@Codist 中获得 null 的原因
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2015-03-30
    • 2020-11-08
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    相关资源
    最近更新 更多