Приложение вылетает при нажатии на кнопку с пустым текстом редактирования - PullRequest
0 голосов
/ 06 августа 2011
btnNadoplata.setOnClickListener(new View.OnClickListener()

        {
            public void onClick(View v) 
            {   
                long inputValue1 = Long.parseLong(text1.getText().toString());
                String encodedHash = Uri.encode("#");

                if (text1.getText().length() == 14 ) {

                    startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:*123*" + inputValue1 + encodedHash)));
                }else {

                    Toast.makeText(bonbon.this, "Krivi kod. Unesi 14-znamenkasti kod sa bona!", Toast.LENGTH_SHORT).show();

                    }
            }
        });

У меня есть один editText, в котором пользователь должен ввести число 14 цифр.Если число меньше или больше 14 цифр, когда пользователь нажимает кнопку, он получает сообщение о том, что ввод не подходит.Проблема в том, что когда editText пуст, и пользователь нажимает на кнопку, приложение вылетает.Как я могу изменить это, так что если editText пуст, пользователь получает сообщение из вышеуказанной части кода ??

Извините за мой плохой английский.

Ответы [ 3 ]

1 голос
/ 06 августа 2011

Вы должны проверить вашу длину ввода перед анализом. Сбой разбора.

 public void onClick(View v) 
 { 
     if( text1.getText().length() <14 )
     {
        Toast.makeText(bonbon.this, "Krivi kod. Unesi 14-znamenkasti kod sa bona!", Toast.LENGTH_SHORT).show();
        return;
     }//if

     long inputValue1 = Long.parseLong(text1.getText().toString());
     String encodedHash = Uri.encode("#");
     startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:*123*" + inputValue1 + encodedHash)));
 }//met

Альтернативой может быть окружение синтаксического анализа с помощью try / catch / block, но он менее эффективен, чем этот простой тест, но более устойчив, если пользователь вводит не цифры.

С уважением, Stéphane

1 голос
/ 06 августа 2011

В этой строке может произойти сбой:

long inputValue1 = Long.parseLong(text1.getText().toString());

Фактически, если в вашем EditText text1 есть пустая строка, функция parseLong() выдаст исключение NumberFormatException.

Перед продолжением следует проверить значение текста text1:

public void onClick(View v) 
{   
    if (text1.getText().toString().compareTo("") == 0)
    {
        long inputValue1 = Long.parseLong(text1.getText().toString());
        String encodedHash = Uri.encode("#");
        ...

Или вы можете добавить инструкцию try/catch, чтобы перехватить исключение, выданное Long.parseLong().

public void onClick(View v) 
{   
    try
    {
        long inputValue1 = Long.parseLong(text1.getText().toString());
        String encodedHash = Uri.encode("#");
        ...
    }
    catch (NumberFormatException nfe)
    {
        ...
    }
0 голосов
/ 27 июля 2012
objText = (EditText)findViewById(R.id.txtPurchasePrice);
String strPurchasePrice = objText.getText().toString();   
objText = (EditText)findViewById(R.id.txtSalePrice);
String strSalePrice = objText.getText().toString();
objText = (EditText)findViewById(R.id.txtShares);
String strShares = objText.getText().toString();

if(strPurchasePrice.trim().equals("") && strSalePrice.trim().equals("") && strShares.trim().equals("")) {      
   Toast.makeText(getApplicationContext(), "Please insert the Values..", 10000).show();
}
...