android - 非法状态异常 OnClick 方法
问题描述
我是 Kotlin 的新手,并试图使应用程序成为禁忌。我有6个文本视图,其中一个是主要词,另一个是禁止词。当我单击按钮时,单词正在替换为其他单词。但是,在我多次单击该按钮后,它给了我一个非法状态异常。
var tabooList = ArrayList<WordModel>()
lateinit var wordMain : TextView
lateinit var word1 : TextView
lateinit var word2 : TextView
lateinit var word3 : TextView
lateinit var word4 : TextView
lateinit var word5 : TextView
这是我的定义。
wordMain = findViewById(R.id.kelimeMain)
word1 = findViewById(R.id.kelime1)
word2 = findViewById(R.id.kelime2)
word3 = findViewById(R.id.kelime3)
word4 = findViewById(R.id.kelime4)
word5 = findViewById(R.id.kelime5)
tabooList.add(WordModel("FİİL","İŞ","OLUŞ","HAREKET","EYLEM","SÖZCÜK"))
tabooList.add(WordModel("UYAK", "ŞİİR", "DİZE", "BENZERLİK", "KAFİYE", "SES"))
这是我的 OnCreate 方法。
fun randomWord(view: View) {
var random = (0..tabooList.size).random()
wordMain.text = tabooList[random].anaKelime
word1.text = tabooList[random].kelime1
word2.text = tabooList[random].kelime2
word3.text = tabooList[random].kelime3
word4.text = tabooList[random].kelime4
word5.text = tabooList[random].kelime5
}
而且,这是我的按钮的 onClick 方法。它首先给了我一个错误wordMain.text = tabooList[random].anaKelime
。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.suatkkrer.taboo_android, PID: 21946
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:414)
at android.view.View.performClick(View.java:7350)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)
at android.view.View.performClickInternal(View.java:7327)
at android.view.View.access$3600(View.java:807)
at android.view.View$PerformClick.run(View.java:28166)
at android.os.Handler.handleCallback(Handler.java:907)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7464)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:955)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)
at android.view.View.performClick(View.java:7350)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)
at android.view.View.performClickInternal(View.java:7327)
at android.view.View.access$3600(View.java:807)
at android.view.View$PerformClick.run(View.java:28166)
at android.os.Handler.handleCallback(Handler.java:907)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7464)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:955)
Caused by: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.get(ArrayList.java:437)
at com.suatkkrer.taboo_android.Activities.TabooActivity.randomWord(TabooActivity.kt:333)
这是错误。
解决方案
Size
返回列表中项目的总数,因此如果您有 2 个项目,则大小将为 2,但数组从零开始,因此您必须在语句中添加 -1:
var random = (0..tabooList.size-1).random()
推荐阅读
- python - Pyenv 无法在 mac 中安装 python 3.5.2
- android - 在 textview 更新上旋转动画
- javascript - 如何仅在插入图像时渲染 CloseIcon?
- javascript - 作为参数传递给自定义钩子的函数没有采用新的变量值
- angular - ngx-charts结果/数据数组更新问题
- iis - 错误:无法读取配置部分“system.applicationHost/sites”,因为它缺少部分声明
- javascript - 有没有办法自定义自动完成弹出菜单vscode?
- git - 在 KRL(KUKA 机器人语言)项目中使用 git
- python - 如何获取具有相同类的元素的内容
- sql - sqlite - 按现在日期时间过滤数据