2016-07-02 4 views
0

金額を入力する必要があり、文字や記号などが含まれている場合は入力を拒否したいと思います。つまり、数値のみを含むようにします。次のようになります。JAVAの文字列にContainsメソッドを使用する

final EditText numberField = (EditText) findViewById(R.id.Cost); 
if(numberField != null) { 
      test = numberField.getText().toString(); 
     } 
     if(test.isEmpty()) { 
       Toast.makeText(this, "Tutar alanını doldurunuz", Toast.LENGTH_SHORT).show();   

     }else if(test.contains("a")||test.contains("b") 
     } else { 
       cost = Integer.parseInt(test.trim()); 
     } 

は、私は、これは動作しますが、test.containsへtest.containsからすべて(「A」)(「Z」)と記号を書くことが長すぎると、コードは本当に悪いに見えると思います。どのように私の目標を達成することができますか?

+0

、あなたが何かを設定できる数字のみを許可するのEditTextに(でも、私は何を忘れてしまいました)。 – Sweeper

+0

はいそれはアンドロイドであり、その情報が役立ちます。私は今それを確認します。 –

+0

XML属性 'inputType'またはメソッド' setInputType'を使用できます。 XML属性を使用する場合は、それを 'number'に設定します。 'InputType.TYPE_CLASS_NUMBER'をメソッドに渡すことができます。 – Sweeper

答えて

1

あなたが余分なライブラリを追加したくない場合は、次のように、あなただけの余分なメソッドを定義することができます。もちろん

public boolean isDecimal(String str) { 
    try { 
     Double.parseDouble(str); 
    } 
    catch(NumberFormatException ex) { 
     return false; 
    } 
    return true; 
} 

を、これは私たちがしているように私はあなたが欲しいと仮定小数を(できるようになりますお金について話している) - 整数だけが必要な場合は、代わりにInteger.parseInt()を使用してください。

次に、あなたのelse if行は次のようになります。これは、Androidの場合は

else if(isDecimal(test)) 
+1

私はこれを答えとして受け入れます。私の問題はアンドロイドでしたので、編集用のテキスト入力だけで十分ですが、これは私の他のプロジェクトにとって大きな助けになります。 –

関連する問題