【发布时间】:2019-12-29 13:21:24
【问题描述】:
原因:java.lang.ArrayIndexOutOfBoundsException:length=5;指数=5 在 com.example.android.architecture.MainActivity.updateDisplay(MainActivity.kt:59) 在 com.example.android.architecture.MainActivity.onCreate(MainActivity.kt:44)
更改索引 和类视图
class MainActivity : AppCompatActivity() {
private lateinit var dice: IntArray
private lateinit var headlineText: String
private val imageViews by lazy {
arrayOf<ImageView>(findViewById(R.id.die1),
findViewById(R.id.die1),
findViewById(R.id.die2),
findViewById(R.id.die3),
findViewById(R.id.die4),
findViewById(R.id.die5)
)
}
private val headline by lazy { findViewById<TextView>(R.id.headline) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
headlineText = savedInstanceState?.getString(HEADLINE_TEXT)
?: getString(R.string.welcome)
dice = savedInstanceState?.getIntArray(DICE_COLLECTION)
?: intArrayOf(6,6,6,6,6)
lifecycle.addObserver(MyLifeCycleObserver())
fab.setOnClickListener{
fabClickHandler()}
updateDisplay()
}
private fun fabClickHandler(){
dice = DiceHelper.rollDice()
headlineText = DiceHelper.evaluateDice(this,dice)
updateDisplay()
}
private fun updateDisplay() {
for (i in 0 until imageViews.size) {
val drawableId = when (dice[i]) {
1 -> R.drawable.die_1
2 -> R.drawable.die_2
3 -> R.drawable.die_3
4 -> R.drawable.die_4
5 -> R.drawable.die_5
6 -> R.drawable.die_6
else -> R.drawable.die_6
}
imageViews[i].setImageResource(drawableId)
}
headline.text = headlineText
}
override fun onSaveInstanceState(outState: Bundle?) {
outState?.putString(HEADLINE_TEXT,headlineText)
outState?.putIntArray(DICE_COLLECTION,dice)
super.onSaveInstanceState(outState)
}
}
不确定为什么我的 android 应用程序没有运行
【问题讨论】:
-
您能否在第 59 行和第 44 行用注释标记您遇到异常的地方?
-
dice只有 5 个元素,imageViews可能更多(那不是(纯)java!!) -
那不是java @CarlosHeuberger,应该去掉标签,你是对的
-
@a_local_nobody 但这应该是 OP 的职责....(我写第一条评论时只有 Java 标记)
-
不,我同意,不是说你错了,实际上只是和你确认它不是 java :) @CarlosHeuberger