我想根据以下行为基于计时器清空EditText
:
在
t1
时间,用户开始输入。应清除EditText
在时间t1
+ 10秒。清除
EditText
后,计时器应该停止。当用户再次输入时,
t2
时,该字段应在t2
+ 10秒后清除,依此类推。
我尝试在Handler
的{{1}}方法中使用afterTextChanged
。
但是,这并未给出所需的行为:TextChangedListener
在用户开始输入时启动,但从那时开始,它会每隔 10秒清除文本,即使用户没有输入任何内容(从我编码的方式看起来很明显)。
但我不知道如何更改它以便文本在用户开始输入内容后10秒钟内清除,而不是每10秒不间断。
没有办法使用Handler
,这比使用Timer
更好吗?一旦被触发,Handlers
看起来像一个并行运行的线程。
答案 0 :(得分:0)
使用计时器...
How to set a timer in android
和
http://writecodeeasy.blogspot.com/2012/08/androidtutorial-timer-p1.html
您可以将计时器设置为在特定秒数后也只运行一次。试试吧希望它有所帮助!
答案 1 :(得分:0)
试试这个,
EditText text = (EditText) findViewById(R.id.YOUR_ID);
text.addTextChangedListener(textWatcher);
Handler myHandler = new Handler();
Runnable myRun = new Runnable(){
public void run()
{
text.setText("");
}
};
private TextWatcher textWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
myHandler.postDelayed(myRun,10000);
}
public void beforeTextChanged(CharSequence s, int start, intcount, int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
myHandler.removeCallbacks(myRun);
}
}