類 MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
**var X: EditText = findViewById(R.id.num12)
var Y: EditText = findViewById(R.id.num2)**
var B: Button = findViewById(R.id.btn1)
var vir: TextView = findViewById(R.id.virw)
var X1: Int = X.text.toString().toInt()
var Y1: Int = Y.text.toString().toInt()
B.setOnClickListener() {
vir.text = "add new ${addtwonumber(X1, Y1)}"
}
}
private fun addtwonumber(a:Int,b:Int):Int{
return a b
}
}
校準 I/Process:發送信號。PID:29733 SIG:9
uj5u.com熱心網友回復:
查看錯誤的這一行:
java.lang.NumberFormatException: For input string: ""
您有一個空字串(因為您的 EditText 最初為空),您正試圖將其轉換為Int. 這就是為什么你得到NumberFormatException.
您可以使用String.toIntOrNull(). 該函式回傳null而不是拋出一個例外,如果該字串不能轉換為Int。然后你可以使用 elvis operator( ?:) 為null Int.
val X1: Int = X.text.toString().toIntOrNull() ?: 0 // Use zero if string does not represent an Int
附帶說明一下,對于不會更改的屬性,請使用vals 而不是vars 并為它們提供更好的名稱(X、Y、X1、Y2 看起來不太好)
uj5u.com熱心網友回復:
一開始你的EditTexts是空的,所以錯誤是因為它不能將空的“”轉換為整數,所以你可以先檢查它是否不為空或使用toIntOrNull()函式,但你也想得到x和y時用戶不是在開始時點擊按鈕,所以正確的方法是將您的代碼從 onCreate 移動到 onClickListener 主體
B.setOnClickListener() {
val X1: Int = X.text.toString().toInt()
val Y1: Int = Y.text.toString().toInt()
vir.text = "add new ${addtwonumber(X1, Y1)}"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/362394.html
上一篇:使用視圖模型在片段之間傳遞資料
