Android 应用程序崩溃,而不是显示空文本
如果用户不输入任何内容并单击ok按钮,则应用程序将显示Entersomething的祝酒词。但当我启动应用程序并单击“确定”按钮而不输入时,应用程序崩溃,显示以下错误: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
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: ""