2015-09-01 22 views
1

我希望我的EditText是數值,而不是與0開頭,如:的EditText第一字符集必須是不爲0

  • 如果我進入123,其確定
  • 如果我進入0123其錯誤。

這是我做了什麼:

if(editText.getText().toString().charAt(0) == '0') { 
    Toast.makeText(getApplicationContext(), "Sorry firs charset must be not 0", Toast.LENGTH_SHORT).show(); 
} 

但是,當我在按鈕(setOnClickListener)點擊它只是工作。

如何在點擊按鈕之前檢查該按鈕?

回答

1

您需要添加TextChangedListener

TextChangedListener添加一個TextWatcherEditText並每次調用EditText's文本更改。

你希望你的edittext不要以「0」開頭。所以分配TextChangedListenerEditText然後檢查輸入字符的事件。

editText.addTextChangedListener(new TextWatcher() 
    { 
    @Override 
    public void afterTextChanged(Editable mEdit) { 
     if(mEdit.toString().length() > 0&& mEdit.toString().charAt(0) == '0') { 
       Toast.makeText(getApplicationContext(), "First letter must not be 0", Toast.LENGTH_SHORT).show(); 
     } 
    } 

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

    public void onTextChanged(CharSequence s, int start, int before, int count){} 
}); 
+2

在調用'charAt()'之前,您必須檢查字符串長度。 – Rami

+1

不客氣! – Rami

2
youredittext.addTextChangedListener(new TextWatcher() 
    { 
    @Override 
    public void afterTextChanged(Editable mEdit) 
    { 
     text = mEdit.toString(); 
     if(text.charAt(0) == '0') { 
        Toast.makeText(getApplicationContext(), "Sorry firs charset must be not 0", Toast.LENGTH_SHORT).show(); 
       } 
    } 

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

    public void onTextChanged(CharSequence s, int start, int before, int count){} 
}); 
3

您可以將TextWatcher添加到您的EditText

yourEditText.addTextChangedListener(new TextWatcher() { 

      public void afterTextChanged(Editable s) { 

      if((s.length()> 0) && (s.toString().charAt(0) == '0')) { 
        Toast.makeText(getApplicationContext(), "Sorry first charset must be not 0", Toast.LENGTH_SHORT).show(); 
      } 

      } 

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

      public void onTextChanged(CharSequence s, int start, int before, int count) {} 
     }); 
2

請試試這個:

editText.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       if (s.length()>0 && s.charAt(0) == '0') { 
        Toast.makeText(getApplicationContext(), "Sorry firs charset must be not 0", Toast.LENGTH_SHORT).show(); 
       } 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 
1

實現你的活動與android.text.TextWatcher

editText.addTextChangedListener(this); 

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

} 

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

} 

@Override 
public void afterTextChanged(Editable s) { 
    if(editText.getText().toString().charAt(0) == '0') { 
Toast.makeText(getApplicationContext(), "Sorry firs charset must be not 0", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
0

onTextChanged方法用於執行與文本即時變化。它有三個參數。第一個參數是Charequence s是在文本字段中輸入的字符串。接下來的三個int參數是Start, Before, Count

Your_EditText.addTextChangedListener(new TextWatcher() 
     { 
     @Override 
     public void afterTextChanged(Editable mEdit) 
     { 

     } 

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

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

      if (s.length()>0 && s.charAt(0) == '0') 
      { 
      Toast.makeText(getApplicationContext(), "Sorry First Charset must be not 0", Toast.LENGTH_SHORT).show(); 

       } 
      }); 
相關問題