0

我想EditText根据以下行为清空基于计时器的 an:

在时间t1,用户开始打字。EditText应在时间+ t110 秒时清除。

清除后EditText,计时器应停止。

当用户再次输入时,在 time t2,该字段应在t2+ 10 秒时被清除,依此类推。

我尝试HandlerafterTextChanged.TextChangedListener

但是,这并没有提供所需的行为:Handler当用户开始输入时启动,但从那时起,它会10 秒清除一次文本,即使用户没有输入任何内容(这从我的方式似乎很明显已编码)。

但我不知道如何更改它,以便在用户开始输入内容后 10 秒后清除文本,而不是每 10 秒不间断。

没有办法使用 a Timer,这比使用更好Handlers吗?Handlers一旦触发,看起来就像一个并行运行的线程。

4

2 回答 2

0

使用定时器...

如何在 android
http://writecodeeasy.blogspot.com/2012/08/androidtutorial-timer-p1.html中设置计时器

您也可以将计时器设置为仅在特定秒后运行一次。!试试看希望有帮助!

于 2013-07-03T09:29:01.980 回答
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);

  }
}
于 2013-07-03T09:44:49.020 回答