Android 应用程序崩溃,而不是显示空文本

Android 应用程序崩溃,而不是显示空文本,android,android-button,android-toast,Android,Android Button,Android Toast,如果用户不输入任何内容并单击ok按钮,则应用程序将显示Entersomething的祝酒词。但当我启动应用程序并单击“确定”按钮而不输入时,应用程序崩溃,显示以下错误: 09-30 05:06:59.099: E/AndroidRuntime(1656): FATAL EXCEPTION: main 09-30 05:06:59.099: E/AndroidRuntime(1656): Process: com.example.mybalancesheet, PID: 1656 09-30 05

如果用户不输入任何内容并单击ok按钮,则应用程序将显示Entersomething的祝酒词。但当我启动应用程序并单击“确定”按钮而不输入时,应用程序崩溃,显示以下错误:

09-30 05:06:59.099: E/AndroidRuntime(1656): FATAL EXCEPTION: main
09-30 05:06:59.099: E/AndroidRuntime(1656): Process: com.example.mybalancesheet, PID: 1656
09-30 05:06:59.099: E/AndroidRuntime(1656): java.lang.IllegalStateException: Could not execute method for android:onClick
09-30 05:06:59.099: E/AndroidRuntime(1656):     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at android.view.View.performClick(View.java:4438)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at android.view.View$PerformClick.run(View.java:18422)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at android.os.Handler.handleCallback(Handler.java:733)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at android.os.Handler.dispatchMessage(Handler.java:95)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at android.os.Looper.loop(Looper.java:136)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at android.app.ActivityThread.main(ActivityThread.java:5001)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at java.lang.reflect.Method.invokeNative(Native Method)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at java.lang.reflect.Method.invoke(Method.java:515)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at dalvik.system.NativeStart.main(Native Method)
09-30 05:06:59.099: E/AndroidRuntime(1656): Caused by: java.lang.reflect.InvocationTargetException
09-30 05:06:59.099: E/AndroidRuntime(1656):     at java.lang.reflect.Method.invokeNative(Native Method)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at java.lang.reflect.Method.invoke(Method.java:515)
09-30 05:06:59.099: E/AndroidRuntime(1656):     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
09-30 05:06:59.099: E/AndroidRuntime(1656):     ... 11 more
更令人困惑的是,我有一个清除所有按钮,它将所有内容重置为开始。现在,如果我此时单击按钮而不输入任何内容,则显示toast

我不明白为什么。第一次单击EditText中的输入:

单击“全部清除”后:

还有一件事,如果我在“全部清除”之后尝试输入一些内容,那么当单击“确定”按钮时,应用程序再次崩溃

代码:

单击空编辑文本时显示此错误:

09-30 05:10:37.069: E/AndroidRuntime(1741): FATAL EXCEPTION: main
09-30 05:10:37.069: E/AndroidRuntime(1741): Process: com.example.mybalancesheet, PID: 1741
09-30 05:10:37.069: E/AndroidRuntime(1741): java.lang.IllegalStateException: Could not execute method for android:onClick
09-30 05:10:37.069: E/AndroidRuntime(1741):     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at android.view.View.performClick(View.java:4438)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at android.view.View$PerformClick.run(View.java:18422)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at android.os.Handler.handleCallback(Handler.java:733)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at android.os.Handler.dispatchMessage(Handler.java:95)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at android.os.Looper.loop(Looper.java:136)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at android.app.ActivityThread.main(ActivityThread.java:5001)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at java.lang.reflect.Method.invokeNative(Native Method)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at java.lang.reflect.Method.invoke(Method.java:515)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at dalvik.system.NativeStart.main(Native Method)
09-30 05:10:37.069: E/AndroidRuntime(1741): Caused by: java.lang.reflect.InvocationTargetException
09-30 05:10:37.069: E/AndroidRuntime(1741):     at java.lang.reflect.Method.invokeNative(Native Method)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at java.lang.reflect.Method.invoke(Method.java:515)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
09-30 05:10:37.069: E/AndroidRuntime(1741):     ... 11 more
09-30 05:10:37.069: E/AndroidRuntime(1741): Caused by: java.lang.NumberFormatException: Invalid int: ""
09-30 05:10:37.069: E/AndroidRuntime(1741):     at java.lang.Integer.invalidInt(Integer.java:137)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at java.lang.Integer.parseInt(Integer.java:358)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at java.lang.Integer.parseInt(Integer.java:331)
09-30 05:10:37.069: E/AndroidRuntime(1741):     at com.example.mybalancesheet.MainActivity.salaryEntered(MainActivity.java:116)
09-30 05:10:37.069: E/AndroidRuntime(1741):     ... 14 more
我的xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textVProm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enter ur Salary"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/edEnteredSal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/buttOk"
        android:layout_gravity="center"
        android:onClick="salaryEntered"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="OK" />
 <TextView
        android:id="@+id/tvSal"
        android:layout_width="wrap_content"
        android:layout_marginTop="34dp"
        android:layout_gravity="center"

        android:layout_height="wrap_content"
        android:text="0"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="23dp"
        android:onClick="goTo"
        android:layout_height="wrap_content"
        android:text="New Entry" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
           android:layout_gravity="center"
           android:onClick="clear"
        android:layout_height="wrap_content"
        android:text="Clear All" />


</LinearLayout>

您的比较或空检查错误。在您的薪水表中输入:

你应该利用

TextUtils.isEmpty()
相反。例如,如果EditText为空,则使用原始条件,它将如下所示:

"" == " "
-这是FALSE,这将使它转到else块并通过调用

saly=Integer.parseInt(sal);
这就产生了错误:

Caused by: java.lang.NumberFormatException: Invalid int: ""

您可以使用etName.addTextChangedListenernew TextWatcher{@Override public void beforeTextChangedCharSequence charSequence,int i,int i1,int i2{}@Override public void onTextChangedCharSequence charSequence,int i,int i1,int i2{}@Override public void AfterextChangedEditable可编辑{ } };若要使用EditTextPost,请发布xml文件。请发布布局file@utkarshdubey尝试将ifsal.contentEquals替换为ifTextUtils.isEmptysal。它仍然会出现!它第一次起作用,但当我在清除所有错误后再次单击“确定”按钮时,同样的错误会出现!现在我已经解决了它!只需删除这个:ed.setText@utkarshdubey,我明白了。看起来您只是将EditText设置为有一个空格,而不是空。提示:如果您的EditText应该只接受数字,则可以通过xml文件进行设置,以避免出现解析异常。
saly=Integer.parseInt(sal);
Caused by: java.lang.NumberFormatException: Invalid int: ""