我有两个 editText 字段,在他们自己的 addTextChangedListeners 中跟随 TextWatchers。输入已正确读取和处理,但我输入的数字根本没有显示在第二个字段 (editText2) 的显示屏上(即使我在 afterTextChanged() 中等待 (sleep()) 一段时间,然后继续设置两个字段的值到空结束设置焦点到第一个字段。
在第一个字段中输入数字时会发生什么:数字显示在字段中,焦点移到第二个字段。在第二个字段中输入数字会发生什么情况:光标(闪烁的垂直线)被冻结,两秒钟后不显示任何数字:光标移动到第一个字段并且两个字段都为空。所有这一切都是为了发生,除了应该显示在第二个字段中输入的数字,然后系统应该冻结显示该数字一段时间,然后设置为 null 并转到第一个字段。
出了什么问题以及如何解决?
public class Spel extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spel);
editText1 = (EditText) findViewById(R.id.editText1);
editText1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if (before==0) { // alleen doen als editText1 leeg was
String v = s.toString();
if (v.equals("0") || v.equals("1") || v.equals("2") || v.equals("3") || v.equals("4") || v.equals("5") || v.equals("6") || v.equals("7") || v.equals("8") || v.equals("9")) {
editText2.requestFocus();
int baanWorpScore = Integer.parseInt(v);
banenWorpScore[0] = baanWorpScore;
}
else {
// blijf wachten op goede invoer
editText1.setText(null);
}
}
}
});
editText2 = (EditText) findViewById(R.id.editText2);
editText2.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if (before==0) {
String v = s.toString();
if (v.equals("0") || v.equals("1") || v.equals("2") || v.equals("3") || v.equals("4") || v.equals("5") || v.equals("6") || v.equals("7") || v.equals("8") || v.equals("9")) {
editText1.requestFocus();
editText1.setText(null);
editText2.setText(null);
int baanWorpScore = Integer.parseInt(v);
banenWorpScore[1] = baanWorpScore;
}
else {
// blijf wachten op goede invoer
editText2.setText(null);
}
}
});
}