如何在addTextChangedListener中等待一秒钟?以下代码给出以下错误: E / AndroidRuntime(1003):java.lang.IllegalMonitorStateException:对象在wait()之前没有被线程锁定
在Object的方法wait()的Android引用中,它说:这个方法只能由拥有该对象监视器的线程调用;请参阅notify(),了解线程如何成为监视器的所有者。
在对象的notify()中说: 此方法只能由拥有此对象监视器的线程调用。线程成为对象监视器的所有者 •通过执行该对象的同步方法; •通过执行同步语句的主体来同步对象; •如果对象的类型为Class,则执行同步静态方法。
我在这里遇到的一个问题是:我不明白......
我该怎么做才能'暂停'一秒钟?
public class Spel extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spel);
editText2 = (EditText) findViewById(R.id.editText2);
editText2.addTextChangedListener(new TextWatcher() {
@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")) {
try {
wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
editText1.requestFocus();
editText1.setText(null);
editText2.setText(null);
int baanWorpScore = Integer.parseInt(v);
}
else {
// blijf wachten op goede invoer
editText2.setText(null);
}
}
}
});
答案 0 :(得分:1)
wait()\ notify()方法需要解决consumer \ producer问题。在您的情况下,如果您只想等待一秒钟,您需要使用Handler和postDelayed。方法。如果你想冻结你的应用程序第二次使用Thread.sleep(1000)