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:91
是 newResult[index] = element
.
顺便说一句,上下文是 Dispachers.IO
newResult
列表为空,您无法使用 newResult[index] = element
向其添加新元素。请改用 newResult += element
或 newResult.add(emenent)
。
您实际上是在尝试访问数组的索引,而您还没有为它初始化任何元素。
像这样初始化 newResult.add(i)
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:91
是 newResult[index] = element
.
顺便说一句,上下文是 Dispachers.IO
newResult
列表为空,您无法使用 newResult[index] = element
向其添加新元素。请改用 newResult += element
或 newResult.add(emenent)
。
您实际上是在尝试访问数组的索引,而您还没有为它初始化任何元素。 像这样初始化 newResult.add(i)