Android 工作室:致命例外:DefaultDispatcher-worker-2

Android studio: FATAL EXCEPTION: DefaultDispatcher-worker-2

Im 运行ning android 工作室 4.1.2 我正在尝试 运行 此交易:

QuestionDao.kt

  @Transaction
    suspend fun getRandomRN(num: Int):List<Question>{
     val result = getRandomWrongOrNotAnsweredQuestionsByCount(num)
        val last = getLastQuizNumber()

        val newResult = mutableListOf<Question>()

        result?.forEachIndexed{ index,element ->
            element.status=0
            element.quiz_number = last+1
            newResult[index] = element  // this is line 91
        }

        result?.let { updateQuestions(newResult) }
        return newResult
    }

运行宁应用抛出错误:

com.example.android.myapplication E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-2
    Process: com.example.android.myapplication, PID: 25245
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.set(ArrayList.java:453)
        at com.example.android.webpooyeshelevatorquize.data.QuestionDao$DefaultImpls.getRandomRN(QuestionDao.kt:91)

QuestionDao.kt:91newResult[index] = element.
顺便说一句,上下文是 Dispachers.IO

newResult 列表为空,您无法使用 newResult[index] = element 向其添加新元素。请改用 newResult += elementnewResult.add(emenent)

您实际上是在尝试访问数组的索引,而您还没有为它初始化任何元素。 像这样初始化 newResult.add(i)