java.lang.illegalstateException不确定与数据类型一样



这是我在kotlin中的第一个代码

activity_main

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="tenge.millionaire.MainActivity">
    <EditText
        android:id="@+id/monthlysalary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:ems="10"
        android:hint="Enter monthly salary"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.502"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <TextView
        android:id="@+id/perday"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_marginTop="56dp"
        android:text="TextView"
        android:textSize="18sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/monthlysalary" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="296dp"
        android:text="Show me :)"
        android:onClick="CaculateAge"
        android:background="@color/colorPrimary"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/perday" />
</android.support.constraint.ConstraintLayout>

mainActivity

package tenge.millionaire
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        perday.setText("");
    }
    public fun CaculateAge(view: View){
        val salary: String = perday.text.toString();
        val perday1 = salary.toInt()/30;
        perday.setText("Per day you earn $perday1")
    }
}

不确定该功能有什么问题,还是数据类型是什么?错误是

致命例外:主要过程:tenge.万人,pid:687java.lang.illegalstateException:无法执行方法Android:OnClickat android.support.v7.app.appcompatviewinflater $ neclaredonClicklistener.onclick(appcompatviewinflater.java:293)at android.view.view.performClick(view.java:6213)at android.widget.textview.performClick(textview.java:11074)at android.view.view $ persionclick.run(view.java:23645)在Android.os.handler.handlecallback(Handler.java:751)在Android.os.handler.dispatchMessage(Handler.java:95)at android.os.looper.loop(looper.java:154)at android.app.activitythread.main(activityThread.java:6692)在java.lang.reflect.method.invoke(本机方法)上在com.android.internal.os.os.zygoteinit $ methodandargscaller.run(zygoteinit.java:1468)在com.android.internal.os.os.zygoteinit.main(zygoteinit.java:1358)引起:java.lang.reflect.invocationTargetException在java.lang.reflect.method.invoke(本机方法)上at android.support.v7.app.appcompatviewinflater $ neclaredonClicklistener.onclick(appcompatviewinflater.java:288)at android.view.view.performClick(view.java:6213)at android.widget.textview.performClick(textview.java:11074)at android.view.view $ persionclick.run(view.java:23645)在Android.os.handler.handlecallback(Handler.java:751)在Android.os.handler.dispatchMessage(Handler.java:95)at android.os.looper.loop(looper.java:154)at android.app.activitythread.main(activityThread.java:6692)在java.lang.reflect.method.invoke(本机方法)上在com.android.internal.os.os.zygoteinit $ methodandargscaller.run(zygoteinit.java:1468)在com.android.internal.os.os.zygoteinit.main(zygoteinit.java:1358)引起:java.lang.numberformatexception:对于输入字符串:"在java.lang.integer.parseint(integer.java:533)在java.lang.integer.parseint(integer.java:556)在tenge.millionaire.mainactivity.Caculateage(MainActivity.KT:18)在java.lang.reflect.method.invoke(本机方法)上at android.support.v7.app.appcompatviewinflater $ neclaredonClicklistener.onclick(appcompatviewinflater.java:288)at android.view.view.performClick(view.java:6213)at android.widget.textview.performClick(textview.java:11074)at android.view.view $ persionclick.run(view.java:23645)在Android.os.handler.handlecallback(Handler.java:751)在Android.os.handler.dispatchMessage(Handler.java:95)at android.os.looper.loop(looper.java:154)at android.app.activitythread.main(activityThread.java:6692)在java.lang.reflect.method.invoke(本机方法)上在com.android.internal.os.os.zygoteinit $ methodandargscaller.run(zygoteinit.java:1468)在com.android.internal.os.os.zygoteinit.main(zygoteinit.java:1358)

perday.setText("");

然后,您正在尝试采用此值并将其放入这里:

val salary: String = perday.text.toString();
val perday1 = salary.toInt()/30;

薪水现在只是一个空字符串,那里崩溃了。

 Caused by: java.lang.NumberFormatException: For input string: ""

您实际上需要每天包含一个数字。现在您说的是" .toint(),这会导致numberFormateXception

相关内容

最新更新