當我第一次在 EditText 欄位中輸入一個數字并執行它應該做的事情時,我的應用程式作業正常。
但是該數字保留在編輯文本中,因此如果我想再次更改它,我必須清除以前的數字。這樣做時,我收到錯誤 java.lang.NumberFormatException: For input string: ""。
我明白原因是因為文本發生了變化,所以 afterTextChanged(p0: Editable?) 被呼叫并且它是一個空字串。
如何防止應用程式崩潰并允許用戶清除和更改號碼?
val textChange : EditText = findViewById(R.id.bombCount)
textChange.addTextChangedListener(object : TextWatcher{
var a : Int = 0
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun afterTextChanged(p0: Editable?) {
a = p0.toString().toInt()
GameControl.reset(a,arrCell,marked)
arr = GameControl.startGame(a)
}
})
<EditText
android:id="@ id/bombCount"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:hint="Bomb Count"
android:inputType="number"
/>
uj5u.com熱心網友回復:
添加一個 isNotblank
override fun afterTextChanged(p0: Editable?) {
if(p0.toString().isNotBlank()){
a = p0.toString().toInt()
GameControl.reset(a,arrCell,marked)
arr = GameControl.startGame(a)
}
}
或者
/* when string is blank you will return a Int*/
a = Int.takeIf{p0.toString().isBlank()}?:p0.toString().toInt()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/367683.html
上一篇:將ID欄位連接到檔案名
