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 "";
}
}});