Проверка, является ли EditText пустым, приводит к сбою приложения - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь создать простое приложение для Android, используя eclipse и android sdk (java). У меня есть поле EditText с некоторыми ограничениями, но оно вылетает, когда поле EditText пусто. Я пробовал так много способов проверить EditText, если пустой, но он просто хочет работать .. мой код ниже, почему он всегда падает, когда поле пусто, должно быть просто нет?

buttonHash.setOnClickListener(new View.OnClickListener(){

    public void onClick(View v){
        switch(v.getId()){
        case R.id.hash_button:
        TextView msg = (TextView)findViewById(R.id.tell);
        info = (EditText)findViewById(R.id.entry);
        anss = info.getText().toString();
        //String ans = Double.toString(res);
        double result = Double.parseDouble(anss);
        if (res == result){
        msg.setText("Correct");
        }else
        if (res != result){
            msg.setText("Incorrect");
            }else
        if (info.getText().toString().equals("")){
            msg.setText("Empty!");
            }
        }       
    }
});

Ответы [ 5 ]

0 голосов
/ 10 марта 2012

Значение EditText никогда не будет нулевым.

Используйте его следующим образом:

if ((info.getText().toString().trim().getLength() == 0) && ("").equals(info.getText().toString().trim())){
            msg.setText("Empty!");
            }
        } 
0 голосов
/ 10 марта 2012

попробуйте, я только что добавил окно предупреждения

public void onClick (View v) { if (_text.getText (). toString (). equals ("")) {

                   AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Text is empty");
            builder.setCancelable(true);
            builder.setPositiveButton("OK",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            // TODO Auto-generated method stub
                            dialog.cancel();
                        }
                    });
            builder.create().show();

            }

            else
                Toast.makeText(getApplicationContext(), _text.getText().toString(), 5000).show();

        }
0 голосов
/ 10 марта 2012

Обратите внимание, что здесь может быть исключение, исключение NumberFormatException, потому что вы пытаетесь разобрать double из "".

anss = info.getText().toString();
        //String ans = Double.toString(res);
        double result = Double.parseDouble(anss);

, поэтому сделайте следующее, чтобы избежать этой проблемы:

double result = 0;

try{

    result = Double.parseDouble(anss);

}catch(NumberFormatException ex)
{
}
0 голосов
/ 10 марта 2012

Вы можете использовать этот код для решения вашей проблемы.

    public void onClick(View v) {
            if (_text.getText().toString().equals(""))
                Toast.makeText(getApplicationContext(), "Empty BOX", 5000).show();
            else
                Toast.makeText(getApplicationContext(), _text.getText().toString(), 5000).show();

        }

Вот так .. Попробуйте это ... это будет работать.

0 голосов
/ 10 марта 2012

Первая проверка для info.getText () равна нулю

if (info.getText() == null || "".equals(info.getText().toString())){ 
            msg.setText("Empty!"); 
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...