我正在构建一个接收成绩的应用程序,我想确保编辑文本不为空且值小于或等于100 我写了这一行,但它崩溃了应用程序
if(Integer.parseInt(editText.gettext().toString()) > 100 || editText.getText().toString().trim().length() == 0)
{
//Error message for example
}
这是logCat
09-04 18:21:06.331 8649-8649 / com.example.nima.myapplication E / AndroidRuntime:致命异常:主要 处理:com.example.nima.myapplication,PID:8649 java.lang.IllegalStateException:无法执行活动的方法 在android.view.View $ 1.onClick(View.java:3827) 在android.view.View.performClick(View.java:4442) 在android.view.View $ PerformClick.run(View.java:18473) 在android.os.Handler.handleCallback(Handler.java:733) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:136) 在android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) 在java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:790) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606) at dalvik.system.NativeStart.main(Native Method) 引起:java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) 在java.lang.reflect.Method.invoke(Method.java:515) 在android.view.View $ 1.onClick(View.java:3822) 在android.view.View.performClick(View.java:4442) 在android.view.View $ PerformClick.run(View.java:18473) 在android.os.Handler.handleCallback(Handler.java:733) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:136) 在android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) 在java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:790) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606) at dalvik.system.NativeStart.main(Native Method) 引起:java.lang.NumberFormatException:无效的int:“” 在java.lang.Integer.invalidInt(Integer.java:137) 在java.lang.Integer.parseInt(Integer.java:358) 在java.lang.Integer.parseInt(Integer.java:331) 在com.example.nima.myapplication.MainActivity.me(MainActivity.java:22) at java.lang.reflect.Method.invokeNative(Native Method) 在java.lang.reflect.Method.invoke(Method.java:515) 在android.view.View $ 1.onClick(View.java:3822) 在android.view.View.performClick(View.java:4442) 在android.view.View $ PerformClick.run(View.java:18473) 在android.os.Handler.handleCallback(Handler.java:733) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:136) 在android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) 在java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:790) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606) 在dalvik.system.NativeStart.main(本地方法)
答案 0 :(得分:1)
然后编写此代码
If(edittext.getString().toString().Trim().lenght()>0)
{
If(Integer.parseInt(editText.gettext().toString()) <= 100 )
{
}
}
答案 1 :(得分:0)
在声明了edittext的xml中,请确保将以下属性放在edittext元素
中android:inputType="number"
将上面的代码更改为:
if(editText.getText().toString().trim().isEmpty() || Integer.parseInt(editText.gettext().toString()) > 100 )
{
//Error message for example
}
首先需要检查文本是否为空
答案 2 :(得分:0)
你只需要切换if的第二个ans第一个表达式。因为当程序运行时,它首先检查第一个表达式,然后检查第二个表达式。
所以...当你在editText上没有任何值时,getText()。toString()返回这个“”并且不可能将这个值解析为Int,所以你必须首先检查length()和之后检查数字是否大于100
if(editText.getText().toString().trim().isEmpty() || Integer.parseInt(editText.gettext().toString()) > 100 )
{
//Error message for example
}
答案 3 :(得分:0)
如果您想控制输入的数字,请使用Attempted to load class "PayUController" from namespace "Payment\PayUBundle\Controller".
Did you forget a "use" statement for another namespace?
android:digits=""
强制打开数字键盘仍然可以按下其他字符,例如&#34; #,。&#34;可能导致 NumberFormatException
android:inputType="number"
android:digits =&#34; 0123456789&#34; 只接受<EditText
android:inputType="number"
android:digits="0123456789"
/>
中的 0123456789 ,而不接受任何其他字符
在转换任何字符串整数之前,您必须检查它是否为空
EditText
答案 4 :(得分:-1)
您的logcat声明您输入的字符串代码需要整数。
引起:java.lang.NumberFormatException:
我建议将EditText值存储在不同的String中,然后检查将其类型化为Integer,很多时候编译器会在那里混淆。
希望这会有所帮助:)