InputFilter で Toast 表示

EditText に、InputFilter を指定して制限以外の文字入力で Toast を出す方法を考えたが、
以下のように単純に出す方法はダメだった。


EditText editText = (EditText)findViewById(R.id.editText);
editText.setFilters(new InputFilter{new InputFilter(){
   @Override
   public CharSequence filter(CharSequence source,int start,int end,Spanned dest,int dstart,int dend){
      if (source.toString().matches("^[a-zA-Z0-9]+$")){
         return source;
      }
      // 制限内の文字を入力後、空文字が引っかかってしまう。
      Toast.makeText(getApplicationContext(), "英数字以外は入力できません", Toast.LENGTH_SHORT).show();

      return "";
   }
}});

以下のようにしないとダメであった。

editText.setFilters(new InputFilter
{new InputFilter(){
   @Override
   public CharSequence filter(CharSequence source,int start,int end,Spanned dest,int dstart,int dend){
      if (source.toString().matches("^[a-zA-Z0-9]+$")){
         return source;
      }
      if ("".equals(source.toString())==false){
         Toast.makeText(getApplicationContext(), "英数字以外は入力できません", Toast.LENGTH_SHORT).show();
      }

      return "";
   }
}});