2011-08-05 17 views
0
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を1つ持っています。ユーザは14桁の数字を入力する必要があります。数字が14桁以下であれば、ユーザーがボタンをクリックすると、入力がうまくいかないというメッセージが表示されます。問題は、editTextが空で、ユーザーがボタンをクリックするとアプリがクラッシュすることです。どのように私はこれを変更することができますので、editTextが空の場合、ユーザーは上記のコード部分からメッセージを取得しますか?空のボタンをクリックするとアプリケーションがクラッシュするeditText

私の悪い英語のSory。

+0

あなたはスタックトレースを投稿することができますか? –

+0

text1!= nullかどうかを確認しますか? – Codejoy

答えて

1

それは、この行にクラッシュする可能性があります:実際に

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("#"); 
     ... 

それとも、Long.parseLong()によってスローされた例外をキャッチするtry/catch命令を追加することができます。

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

解析する前に入力の長さをテストする必要があります。解析でクラッシュします。

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 /ブロックを解析する囲むかもしれないが、ユーザーの種類以外の数字かどうかは、この簡単なテストよりも効率が、より堅牢なのです。

よろしく、 ステファン

0
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(); 
} 
+0

これはうまく動作します –

関連する問題