Проверьте, не является ли текст редактирования, который принимает только число, пустым, а число меньше или равно 100

Я создаю приложение для получения оценок, и я хочу убедиться, что тексты редактирования не пусты, а значения меньше или равны 100 Я написал эту строку, но она вылетает из приложения

if(Integer.parseInt(editText.gettext().toString()) > 100 || editText.getText().toString().trim().length() == 0)
{
//Error message for example
} 

а это logCat

В вашем xml, где вы объявили edittext, убедитесь, что вы поместили следующий атрибут в элемент edittext


person Nima    schedule 04.09.2016    source источник


Ответы (5)


И измените приведенный выше код на этот:

android:inputType="number"

вам сначала нужно проверить, не пуст ли текст

 if(editText.getText().toString().trim().isEmpty() || Integer.parseInt(editText.gettext().toString()) > 100 )
    {
    //Error message for example
    } 

Затем напишите этот код

person v4_adi    schedule 04.09.2016

Если вы хотите контролировать, какую цифру следует вводить, используйте
If(edittext.getString().toString().Trim().lenght()>0)
{
     If(Integer.parseInt(editText.gettext().toString()) <= 100 )
     {

     }
}

Сначала вы вводите свой XML EditText Тип ввода = Число

If(edittext.getString().toString().Trim().lenght()>0)
{
     If(Integer.parseInt(editText.gettext().toString()) <= 100 )
     {

     }
}
person Maulik Santoki    schedule 04.09.2016

android:inputType="number" принудительно открывать клавиатуру числового типа, пользователь может нажимать другой символ, например "# ,.", что может вызвать NumberFormatException

android: digits = "0123456789" принимает только 0123456789 в EditText, а не любые другие символы

<EditText
    android:inputType="number"
    android:digits="0123456789"
/>

Перед преобразованием любого строкового целого числа необходимо проверить, пусто ли оно.

Вам нужно только переключить 2-е и 1-е выражения if. Потому что, когда программа запускается, она сначала проверяет 1-е выражение, а затем 2-е.

String strNumber=editText.getText().toString().trim();
 if(TextUtils.isEmpty(strNumber) || Integer.parseInt(strNumber)>100){
   // show your error message
}
person N J    schedule 04.09.2016

Итак ... когда у вас нет значения в editText, getText (). ToString () возвращает это "", и его невозможно проанализировать в Int это значение, поэтому вам нужно сначала проверить length (), а затем проверить если число больше 100

В вашем logcat указано, что вы вводите строку, в которой для кода требуется целое число.

if(editText.getText().toString().trim().isEmpty() || Integer.parseInt(editText.gettext().toString()) > 100 )
{
//Error message for example
} 
person Francisco Castro    schedule 04.09.2016

Вызвано: java.lang.NumberFormatException:

Я бы посоветовал сохранить значение EditText в другой String, а затем проверить приведение его к типу Integer, часто компилятор путается с этим.

Надеюсь это поможет :)

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) в java.lang.reflect.Method.invokeNative (собственный метод) в java.lang.reflect.Method.invoke (Method.java:515) в com.android.internal.os .ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:790) в com.android.internal.os.ZygoteInit.main (Zygo teInit.java:606) в dalvik.system.NativeStart.main (собственный метод) Вызвано: java.lang.reflect.InvocationTargetException в java.lang.reflect.Method.invokeNative (собственный метод) в 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) в java.lang.reflect.Method.invokeNative (собственный метод) в java.lang.reflect.Method.invoke (Method.java:515) в com .android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:790) в com.andr oid.internal.os.ZygoteInit.main (ZygoteInit.java:606) в dalvik.system.NativeStart.main (собственный метод) Причина: 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) на java.lang.reflect. Method.invokeNative (собственный метод) в 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) на java.lang.reflect.Method.invokeNative (собственный метод) на 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 (собственный метод)

person THGRoy    schedule 04.09.2016