android 开发,有一个需求,就是利用扫描仪快速往app界面中的Edittext输入一串数字,当这串数字符合规则的时候,调用查询方法。否则不符合规则,就提示。但是大家用过这个TextWatcher的都知道,它每次改变内容都会调用方法,所以致使不到一秒的时间连续调用好多次不符合规则的情况,程序就异常了。不知道有什么方法可以解决,下面是简单的举例:
package com.xzsj.measure;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Window;
import android.widget.EditText;
import android.widget.Toast;
public class GoneNActivity extends Activity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_gone_n);
// 绑定EditText输入框
editText = (EditText) findViewById(R.id.editText1);
// 实现文字内容改变监听(TextWatcher)
editText.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 (s.toString().length() == 10) {
Toast.makeText(GoneNActivity.this, "格式正确!", Toast.LENGTH_SHORT).show();
} else {
// 不符合格式,(length等于10符合规则,那么这个else分支,连续执行9次,所以异常了,有没有什么办法,实现类似效果,但是不异常)
Toast.makeText(GoneNActivity.this, "格式错误!", Toast.LENGTH_SHORT).show();
}
}
});
}
}