Android проверяет десятичную точку EditText "." - PullRequest
0 голосов
/ 06 января 2012

Я делаю некоторые математические расчеты для значений двух полей EditText, я хочу иметь следующие проверки:

  1. Они не пусты.
  2. Они действительны друг для друга (если первое поле было целым числом, второе должно быть одинаковым, если первое было десятичным, второе должно быть одинаковым).

Я не могу понять, как проверять десятичные значения или, в частности, десятичную точку.

Я попробовал это, но это не сработало. Мое приложение просто вылетает.

    if (editText1.getText().toString().equals(".") || editText2.getText().toString().equals(".")) 
    return;

Ответы [ 4 ]

0 голосов
/ 06 января 2012

Вы можете проверить, является ли что-то действительным значением или нет, попытавшись разобрать его с помощью Float.parseFloat и посмотрев, генерирует ли оно исключение NumberFormatException (через try / catch). Если это так, то вы знаете, что ввод неверен.

Кстати, хорошо, если вы предоставите визуальную подсказку пользователю, чтобы сообщить ему, что ввод неверен. В отличие от ожидания, пока пользователь нажмет кнопку «Рассчитать» и скажет им только тогда.

0 голосов
/ 06 января 2012

Прежде всего, вы хотите установить тип ввода, чтобы принимать десятичные и / или числовые значения.

Вы можете настроить его в макете XML:

<EditText
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:inputType="numberDecimal|number"    
/>

Затем вы можете просто преобразовать текст EditText в удвоенный:

double result = new Double(editText1.getText().toString());

или

double result = Double.valueOf(editText1.getText().toString());

Эта ракетная наука, которую вы уничтожили, больше не нужна после этого.

0 голосов
/ 06 января 2012

Вы можете использовать метод contains (), чтобы проверить, содержит ли ваша строка предоставленный вами аргумент

if (textView1.getText().toString().contains(".") || textView2.getText().toString().contains(".")) {
                        Toast.makeText(getApplicationContext(), "Wrong Values", Toast.LENGTH_LONG).show();
0 голосов
/ 06 января 2012

Для десятичного значения вы можете использовать это:

EditText et = (EditText) findViewById(R.id.myTextView) ;   

et.setInputType(0x00002002);

Он будет принимать только десятичные значения.

Другое решение здесь .

...