我剛開始學習 kotlin,在我的應用程式中,我想將用戶從 EditText 放置的值帶到我的 MainActivity 并處理它(例如將 1.5 添加到該值并在螢屏上顯示該值),但我不知道如何為此,我到目前為止撰寫的代碼:
val btnClick= findViewById<Button>(R.id.btn)
val tekstNaButtonie = findViewById<TextView>(R.id.siema)
val mEdit = findViewById<EditText>(R.id.editTextTextPersonName)
val strrr = mEdit.getText()
val strrrr = strrr.toString()
val liczba = strrrr.toFloat()
val liczbaa = liczba 1.5f
btnClick.setOnClickListener {
tekstNaButtonie.text = liczbaa.toString()
Toast.makeText(this@MainActivity,"Kliknales mnie!",Toast.LENGTH_LONG).show()
}
我的 XML:
android:id="@ id/editTextTextPersonName"
android:layout_width="100sp"
android:layout_height="48sp"
android:layout_marginStart="16sp"
android:layout_marginTop="12sp"
android:ems="10"
android:hint="0"
android:importantForAutofill="no"
android:inputType="numberDecimal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
使用此代碼應用程式不想啟動: 在此處輸入影像描述
uj5u.com熱心網友回復:
我認為使用toFloatOrNull(). 如果文本不是數字,它將回傳 null 而不是拋出例外。然后,如果數字為空,您可以跳過計算。或者,您可以向用戶顯示訊息。
此外,您需要檢查按鈕內的這些值,否則按鈕只會看到原始值。
val btnClick= findViewById<Button>(R.id.btn)
val tekstNaButtonie = findViewById<TextView>(R.id.siema)
val mEdit = findViewById<EditText>(R.id.editTextTextPersonName)
btnClick.setOnClickListener {
val liczba = mEdit.getText().toString().toFloatOrNull()
if (liczba != null) {
val liczbaa = liczba 1.5f
tekstNaButtonie.text = liczbaa.toString()
Toast.makeText(this@MainActivity,"Kliknales mnie!",Toast.LENGTH_LONG).show()
} else {
//Maybe show user an error message
}
}
或者,如果您想將無效輸入視為 0,您可以使用?:elvis 運算子提供默認值 0:
val btnClick= findViewById<Button>(R.id.btn)
val tekstNaButtonie = findViewById<TextView>(R.id.siema)
val mEdit = findViewById<EditText>(R.id.editTextTextPersonName)
btnClick.setOnClickListener {
val liczba = mEdit.getText().toString().toFloatOrNull() ?: 0f
val liczbaa = liczba 1.5f
tekstNaButtonie.text = liczbaa.toString()
Toast.makeText(this@MainActivity,"Kliknales mnie!",Toast.LENGTH_LONG).show()
}
uj5u.com熱心網友回復:
在將字串轉換為浮點數之前,您應該try - catch為潛在的 s 。NumberFormatException
另外,我認為您應該在單擊偵聽器中移動值初始化:
val btnClick= findViewById<Button>(R.id.btn)
val tekstNaButtonie = findViewById<TextView>(R.id.siema)
val mEdit = findViewById<EditText>(R.id.editTextTextPersonName)
btnClick.setOnClickListener {
val liczba = try {
mEdit.getText().toString().toFloat()
} catch (e: NumberFormatException) { 0f }
val liczbaa = liczba 1.5f
tekstNaButtonie.text = liczbaa.toString()
Toast.makeText(this@MainActivity,"Kliknales mnie!",Toast.LENGTH_LONG).show()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/430007.html
