2015-12-17 3 views
-2

У меня есть три элемента управления EditText, и мне нужно убедиться, что каждый из них является правильным номером ввода.Проверка правильности номера в Android

Первый должен быть числом от 0 до 23

Второй должен быть числом от 0 до 59

и третий должен быть числом от 0 до 1500

Я видел, кто-то сделать пост о простой проверке EditText использования setError, пример:

EditText firstName = (EditText)findViewById(R.id.first_name); 
if (firstName.getText().toString().length() == 0) 
    firstName.setError("First name is required!"); 

Так есть простой способ сделать это, как и выше, но убедившись, что номер не> 23, 59 или 1500 (индивидуально)?

+1

имеют хорошие ответы здесь: [Есть ли способ, чтобы определить минимальное и максимальное значение для EditText в Android?] (Http://stackoverflow.com/ а/14212734/1520438) –

ответ

0
EditText firstEditText = (EditText)findViewById(R.id.first_edit_text); 
EditText secondEditText = (EditText)findViewById(R.id.second_edit_text); 
EditText thirdEditText= (EditText)findViewById(R.id.third_edit_text); 
int value; 

value = Integer.parseInt(firstEditText .getText().toString()); 
if (! value > 0 && value < 23) 
    firstEditText.setError("Error"); 

value = Integer.parseInt(secondEditText .getText().toString()); 
if (! value > 0 && value < 59) 
    secondEditText.setError("Error"); 

value = Integer.parseInt(thirdEditText.getText().toString()); 
if (! value > 0 && value < 1500) 
    thirdEditText.setError("Error"); 
0

Integer.parseInt(String s) может преобразовать строку в целое число. Затем вы проверяете ее с помощью if, else.

Однако вход не может быть целым числом, и вы должны установить android:numeric="integer" в теге <EditText /> в файле .xml. Будьте осторожны, если строка ввода не является целым числом, Integer.parseInt() выдаст исключение, которое вызовет сбой.

0

Вы хотите убедиться, что выполняете некоторую проверку ошибок, поскольку значение исходит от пользователя. Попробуйте что-то вроде этого:

EditText firstText = (EditText) findViewById(R.id.first); 
try 
{ 
    long firstVal = Long.parseLong(firstText.getText()); 
    if (firstVal < 0 || firstVal > 23) 
     firstText.setError("The value must be between 0 and 23!"); 
} 
catch (NumberFormatException e) 
{ 
    firstText.setError("Enter an integer value!"); 
} 

// very similar for your remaining cases 
0
String value = firstName.getText().toString(); 
int int_value = Integer.parseInt(value); 
if (firstName.getText().toString().length() != 0) 
    if (int_value < 1500) { 
    // do what you want 
    } 
    else if (int_value < 59) { 
    // do what you want 
    } 
    else if (int_value < 23) { 
    // do what you want 
    } 
}else { 
    firstName.setError("First name is required!"); 
} 
Смежные вопросы