有什么方法可以阻止 kotlin 中 EditText 中的空 Decimal 值崩溃?
Is there any way on stop crashing in empty Decimal value in EditText in kotlin?
当我们输入空值时,我的应用程序需要帮助。当我尝试计算时,如果没有价值,是否有任何方法可以防止崩溃。
只是我需要当我按下计算按钮时它在答案
中将文本设置为 "Put a value "
当我尝试将字符串转换为 DecimalorNull 类型时,计算出现错误并阻止构建
这是我的布局xml
<EditText
android:id="@+id/distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/distance"
android:inputType="number|numberDecimal|numberSigned"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.094"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.034" />
<EditText
android:id="@+id/initalVelocity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/initialVelocity"
android:inputType="number|numberDecimal|numberSigned"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.094"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.133" />
<EditText
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/time"
android:inputType="number|numberDecimal|numberSigned"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.094"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.232" />
<TextView
android:id="@+id/answer"
android:layout_width="219dp"
android:layout_height="37dp"
android:text="@string/answer"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.096"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.35" />
<Button
android:id="@+id/calculate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/calculate"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.462" />
这是我的主要 activity kt 文件:
calculate.setOnClickListener {
val s = distance.text.toString().toDouble()
val u = initalVelocity.text.toString().toDouble()
val t = time.text.toString().toDouble()
val a = (((2* s))-(2*(u*t)))/(t*t)
answer.setText("answer $a m/(s)^2")
}
图片
首先点击按钮,你必须检查 EditText 是否有任何值,如果没有则不计算
这里是例子
btn.setOnClickListener{
//read value from `EditText` to a String variable
val s = distance.text.toString().trim().toDouble()
val u = initalVelocity.text.toString().trim().toDouble()
val t = time.text.toString().trim().toDouble()
//check if the `EditText` have values or not
if(s > 0 && u > 0 && t > 0) {
//calculate
val a = (((2* s))-(2*(u*t)))/(t*t)
answer.setText("answer $a m/(s)^2")
}else{
Toast.makeText(applicationContext, "Please value! ", Toast.LENGTH_SHORT).show()
}
}
你可以找到更清晰的解决方案here and type-conversion-kitlin
试试这个
calculate.setOnClickListener {
if((distance.text.toString().lenght>0) &&
(initalVelocity.text.toString().lenght>0) &&
(time.text.toString().lenght>0)) {
val s = distance.text.toString().toDouble()
val u = initalVelocity.text.toString().toDouble()
val t = time.text.toString().toDouble()
val a = (((2* s))-(2*(u*t)))/(t*t)
answer.setText("answer $a m/(s)^2")
}else{
//String null
}
}
当我们输入空值时,我的应用程序需要帮助。当我尝试计算时,如果没有价值,是否有任何方法可以防止崩溃。 只是我需要当我按下计算按钮时它在答案
中将文本设置为 "Put a value "当我尝试将字符串转换为 DecimalorNull 类型时,计算出现错误并阻止构建
这是我的布局xml
<EditText
android:id="@+id/distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/distance"
android:inputType="number|numberDecimal|numberSigned"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.094"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.034" />
<EditText
android:id="@+id/initalVelocity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/initialVelocity"
android:inputType="number|numberDecimal|numberSigned"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.094"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.133" />
<EditText
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/time"
android:inputType="number|numberDecimal|numberSigned"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.094"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.232" />
<TextView
android:id="@+id/answer"
android:layout_width="219dp"
android:layout_height="37dp"
android:text="@string/answer"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.096"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.35" />
<Button
android:id="@+id/calculate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/calculate"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.462" />
这是我的主要 activity kt 文件:
calculate.setOnClickListener {
val s = distance.text.toString().toDouble()
val u = initalVelocity.text.toString().toDouble()
val t = time.text.toString().toDouble()
val a = (((2* s))-(2*(u*t)))/(t*t)
answer.setText("answer $a m/(s)^2")
}
图片
首先点击按钮,你必须检查 EditText 是否有任何值,如果没有则不计算
这里是例子
btn.setOnClickListener{
//read value from `EditText` to a String variable
val s = distance.text.toString().trim().toDouble()
val u = initalVelocity.text.toString().trim().toDouble()
val t = time.text.toString().trim().toDouble()
//check if the `EditText` have values or not
if(s > 0 && u > 0 && t > 0) {
//calculate
val a = (((2* s))-(2*(u*t)))/(t*t)
answer.setText("answer $a m/(s)^2")
}else{
Toast.makeText(applicationContext, "Please value! ", Toast.LENGTH_SHORT).show()
}
}
你可以找到更清晰的解决方案here and type-conversion-kitlin
试试这个
calculate.setOnClickListener {
if((distance.text.toString().lenght>0) &&
(initalVelocity.text.toString().lenght>0) &&
(time.text.toString().lenght>0)) {
val s = distance.text.toString().toDouble()
val u = initalVelocity.text.toString().toDouble()
val t = time.text.toString().toDouble()
val a = (((2* s))-(2*(u*t)))/(t*t)
answer.setText("answer $a m/(s)^2")
}else{
//String null
}
}