Проблема с Indexoutofbounds (arraylist) в kotlin - PullRequest
0 голосов
/ 12 апреля 2020

Привет, уважаемое сообщество.

Я пытаюсь внедрить средство выбора изображений Pix в проект, но у меня возникает проблема, когда я пытаюсь установить второе изображение во второй кнопке изображения, это мой макет:

введите описание изображения здесь

и это мой код

class MainActivity : AppCompatActivity() {

var options: Options? = null
var returnValue = ArrayList<String>()
val listaimg = ArrayList<String>()
var buttonimg1 : ImageButton? = null
var buttonimg2 : ImageButton? = null
var context : Context? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    buttonimg1 = findViewById(R.id.ev1)
    buttonimg2 = findViewById(R.id.ev2)
    options = Options.init()
        .setRequestCode(100)
        .setCount(2)
        .setFrontfacing(false)
        .setImageQuality(ImageQuality.LOW)
        .setPreSelectedUrls(returnValue)
        .setScreenOrientation(Options.SCREEN_ORIENTATION_PORTRAIT)
        .setPath("/diego/evidencias")

        findViewById<View>(R.id.evbutton).setOnClickListener{ view:View? ->

            options!!.setPreSelectedUrls(returnValue)
            Pix.start(this,options)

    }
}




public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    when (requestCode) {
        100 -> {
            if (resultCode == Activity.RESULT_OK) {
                returnValue = data!!.getStringArrayListExtra(Pix.IMAGE_RESULTS)
                setImage(returnValue)
            }
        }
    }
}

fun setImage (strings : ArrayList<String>){
    this.listaimg.clear()
    this.listaimg.addAll(strings)


     val f0 = File(listaimg[1])
    val f1 = File(listaimg[0])
    val d0 = BitmapDrawable(context?.resources, f0.absolutePath).bitmap
    val d1 = BitmapDrawable(context?.resources,f1.absolutePath).bitmap
    buttonimg1!!.setImageBitmap(d0)
    buttonimg2!!.setImageBitmap(d1)


}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray
) {
    when (requestCode) {
        PermUtil.REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS -> {

            // If request is cancelled, the result arrays are empty.
            if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Pix.start(this@MainActivity, options)
            } else {
                Toast.makeText(
                    this@MainActivity,
                    "Approve permissions to open Pix ImagePicker",
                    Toast.LENGTH_LONG
                ).show()
            }
            return
        }
    }
}

}

Когда я только покидаю позицию 0 из списка с соответствующим назначением файла, растрового изображения и кнопки изображения, работает хорошо, очевидно, с одним изображением, но когда я пытаюсь поставить вторую позицию, у меня появляется эта ошибка

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com. example.piximagebutton, PID: 1604 java .lang.RuntimeException: сбой при доставке результата ResultInfo {who = null, request = 100, result = -1, data = Intent {(with extras)}} в действие {com.example. piximagebutton / com.example.piximagebutton.MainActivity}: java .lang.IndexOutOfBoundsException: индекс: 1, размер: 1 в android .app.ActivityThread.deliverResults (ActivityThread. java: 4932) в android. app.ActivityThread.handl eSendResult (ActivityThread. java: 4975) в android .app.ActivityThread.-wrap20 (неизвестный источник: 0) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1950) в android .os.Handler.dispatchMessage (Обработчик. java: 108) в android .os.Looper.l oop (Looper. java: 166) в android .app.ActivityThread.main ( ActivityThread. java: 7425) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.Zygote $ MethodAndArgsCaller.run (Zygote. java: 245) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 921) Причина: java .lang.IndexOutOfBoundsException: Индекс: 1, размер: 1 при java .util.ArrayList.get (ArrayList. java: 437) в com.example.piximagebutton.MainActivity.setImage (MainActivity.kt: 73) в com.example.piximagebutton.MainActivity.onActivityResult (MainActivity.kt: 61) в android .app. Activity.dispatchActivityResult (Activity. java: 7690) в android .app.ActivityThread.deliverResults (ActivityThread. java: 4928) в android .app.ActivityThread.handleSendResult (ActivityThread. java: 4975) в android .app.ActivityThread.-wrap20 (неизвестный источник: 0) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1950) в android .os. Handler.dispatchMessage (Handler. java: 108) в android .os.Looper.l oop (Looper. java: 166) в android .app.ActivityThread.main (ActivityThread. java : 7425) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.Zygote $ MethodAndArgsCaller.run (Zygote. java: 245) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 921) I / Процесс: отправка сигнала. PID: 1604 SIG: 9

Я не понимаю, почему эта ошибка, кстати, я новичок в этих темах, Если вы можете мне помочь, я буду вечно благодарен

Спасибо сообществу (у)

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