我的代码在 99% 的情况下都可以完美运行,但是如果我将键盘混搭的时间足够长,有时我可以让它抛出 IndexOutOfBounds 异常。我无法确切地告诉您如何重现它,因为如果没有字面上的键盘捣碎时间,我自己无法重现它。
边界与我不同的 editText 的字符限制相匹配,但我无法弄清楚是什么导致操作尝试在边界之外执行某些操作。
该错误已由 pushDigitToNextEditText、moveCursorIfNecessary 和 pushDigitToFront 方法(间接)触发,但它也发生在我的堆栈跟踪中没有任何代码,只有 android 源代码。(这怎么可能?)
我几乎找不到关于这种特殊类型的 outOfBounds 异常的信息,我几乎准备放弃了。我不敢相信实际用户会像我必须让它抛出错误的方式滥用编辑文本框,但谁知道呢?
出于同样的原因,我无法告诉您如何重现它,我不知道所需的最少代码量是多少。所以这就是全部。我添加了一个堆栈跟踪,但我可以给你更多。我有很多。
package com.example.phonenumberdemo
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.widget.EditText
import com.example.phonenumberdemo.databinding.ActivityMainBinding
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
setUpPhoneEditTexts()
}
private var digitDeletedFlag = false
private var userIsNotMakingChanges = false
private var prevEditText1CursorPosition: Int? = null
private var prevEditText2CursorPosition: Int? = null
private …Run Code Online (Sandbox Code Playgroud)