Тост-сообщение, требующее от пользователя заполнить пустые поля «EditText» - PullRequest
1 голос
/ 18 мая 2011

Я пытаюсь заставить сообщение появиться при нажатии кнопки, чтобы сообщить пользователю заполнить пустое поле.В настоящее время, если поле пустое, происходит сбой / принудительное закрытие приложения.Я попытался сделать следующий код и имел нулевой успех.Изначально у меня там не было if / else, я просто запустил калькулятор ();метод и следующий им код.

Может ли кто-нибудь указать мне правильное направление?

  public void onClick(View  v) 
  { 
     if ((EditText)findViewById(R.id.amount1)== null)
     {
          Context context = getApplicationContext();
          CharSequence text = "Enter a number";
          int duration = Toast.LENGTH_SHORT;

          Toast toast = Toast.makeText(context, text, duration);
          toast.show();
     }
     else
     {
      calculator();
      InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
      imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
     }
  }

Я уверен, что это плохой код:

if ((EditText)findViewById(R.id.amount1)== null)

Просто не знаю, как это сказатькак я хочу.

Ответы [ 6 ]

5 голосов
/ 18 мая 2011

Попробуйте проверить длину текста в виджете EditText

EditText e = (EditText)findViewById(R.id.amount1));
if(e.getText().length == 0){
//Show Toast
}else{
//continue your code
}
2 голосов
/ 01 октября 2012

Используйте этот код.

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

if(et1.getText().length() == 0){
    //Display toast here
} else{
    //Your code
}
0 голосов
/ 18 мая 2011

((EditText)findViewById(R.id.amount1)== null просто получает ссылку на EditText с идентификатором amount1, он не проверяет, имеет ли этот EditText допустимую запись.

Чтобы увидеть, есть ли в EditText текст, выможно получить строку, которую он содержит, с помощью EditText#getText().toString()

. Для этого сначала сохраните ссылку на EditText в переменной, а затем выполните проверку строки:

EditText et = (EditText)findViewById(R.id.amount1);
String amount1 = et.getText().toString();

if (amount1.equals("")) {
  // Do your stuff here
}

Я использую локальные переменные и просто предполагаю, что вы хотите, чтобы строка имела содержимое.Скорее всего, вам придется выполнять другие проверки для обработки всех случаев (например, некорректный ввод).Некоторое из этого вы можете уменьшить, установив inputType в EditText.Например, вы можете установить для него значение NumberDecimal, если вы пытаетесь обрабатывать только десятичные числа.

0 голосов
/ 18 мая 2011

Даже если поле пустое, текст редактирования не является нулевым.Использование:

EditText editText = (EditText)findViewById(R.id.amount1);
String text = new String(editText.getText());

if (test.equals("")) {
//...
0 голосов
/ 18 мая 2011

Вы действительно хотите проверить, является ли содержимое EditText нулевым или пустой строкой.

Рассматриваемая строка должна выглядеть примерно так:

if("".equals(((EditText)findViewById(R.id.amount1)).getText().toString()))

Конечно, вы можете разбить это утверждение на несколько строк, чтобы сделать его более читабельным!

0 голосов
/ 18 мая 2011
EditText text = (EditText)findViewById(R.id.amount1);

if(TextUtils.isEmpty(text.toString())) {
    // show toast
}
...