n秒后编辑文本清除文本

时间:2013-07-03 09:24:31

标签: android android-edittext android-handler

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

  

t1时间,用户开始输入。应清除EditText   在时间t1 + 10秒。

     

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

     

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

我尝试在Handler的{​​{1}}方法中使用afterTextChanged

但是,这并未给出所需的行为:TextChangedListener在用户开始输入时启动,但从那时开始,它会每隔 10秒清除文本,即使用户没有输入任何内容(从我编码的方式看起来很明显)。

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

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

2 个答案:

答案 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);

  }
}