2012-12-26 76 views
2

編輯文本驗證我有一個編輯文本中,用戶可以輸入量,我想在編輯文本的一些限制安卓:貨幣

  1. 量不能大於10萬多
  2. 用戶輸入量像99999.50

可達小數點後兩位-EDITED-解決

如何做到這一點,我必須創建filter或者我可以使用Regular ExpressionmyEdittext.addTextChangedListener(new TextWatcher() ...

myAmountEditText.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) {} 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) {} 

      @Override 
      public void afterTextChanged(Editable s) { 
       if(amount!=null && amount.length()>=1){ 
       if(amount.contains(".")){ 
        int indexOFdec = amount.indexOf("."); 

        if(indexOFdec >=0) { 
         if(amount.substring(indexOFdec).length() >3){ 
          amount = amount.substring(0, amount.length()-1); 
          myAmountEditText.setText(amount); 
          myAmountEditText.setSelection(myAmountEditText.getText().length()); 
         } 
        } 
       } 

       Double a = Double.parseDouble(amount.toString()); 

       if(a>0 && a<100000.00){ 
        //my stuff 
       }else{ 
        Toast.makeText(context, "amount greater than 100000", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 

回答

1

您可以使用此代碼實現:

edittext.addTextChangedListener(new TextWatcher(){ 
    public void afterTextChanged(Editable s) {} 

    public void beforeTextChanged(CharSequence s, int start, int count, int after){} 

    public void onTextChanged(CharSequence s, int start, int before, int count){ 
     String strEnteredVal = edittext.getText().toString(); 

     if(!strEnteredVal.equals("")){ 
     int num=Integer.parseInt(strEnteredVal); 
     if(num<100000){ 
     edittext.setText(""+num); 
     }else{ 
     edittext.setText(""); 
     } 
    } 

}); 

,我認爲我們可以像這樣的工作:

String str = editText.getText().toString(); 

    int indexOFdec = str.indexOf("."); 

    if(indexOFdec >=0) { 
     if(str.substring(indexOFdec).length() >2) 
     { 
      Toast.makeText(getApplicationContext(), "Print a message here", Toast.LENGTH_SHORT).show(); 
      return; 
     } 
    } 
+0

再次,你可以把另一個條件來檢查你的第二點.. –

+0

限制用戶到小數點後兩位 – Androider

+0

看到我的編輯代碼.... !!! :) –

1

你可以做這在你的xml代碼中。在XML中,你指定E * ditText *把這兩條標內部的

 android:inputType="numberDecimal" 
    android:maxLength="7" 

現在使用此代碼來通知用戶,他們可以小數點後放置超過2位數。

 txt1 = (EditText)findViewById(R.id.editText1); 
    submit = (Button)findViewById(R.id.button2); 

    submit.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
       String str = txt1.getText().toString(); 

       int indexOFdec = str.indexOf("."); 

       if(indexOFdec >=0) { 
        if(str.substring(indexOFdec).length() >3) 
        { 
         Toast.makeText(getApplicationContext(), "put Only 2 digit after decimal", Toast.LENGTH_SHORT).show(); 
         return; 
        }else{ 
         Toast.makeText(getApplicationContext(), "Correct Number", Toast.LENGTH_SHORT).show(); 
        } 
       } 

     } 
    }); 
} 

它會工作。

+0

如果我想寫99999.51文本將停止在99999.5 – Androider

+0

和100000是6位數 – Androider

+0

你把6代替7它會工作。 –