2011-10-18 36 views
0

有没有什么办法让addTextChangedListner在启动下一个intent之前等待指定的时间。 我的问题即将到来时,它正在从输入读取,它只读取第一个字符,然后立即启动。如果它能像” .wait(100),这将是一次读取所有输入你可以让addTextChangedListner等待吗?

非常感谢

输入从扫描设备来了,我宁愿不使用按钮时说。启动速度。

final EditText name = (EditText)findViewById(R.id.editText1); 

name.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void afterTextChanged(Editable s) { 

String results = name.getText().toString(); 

Intent one= new Intent("com.test.testing"); 
one.putExtra("key", results); 
startActivityForResult(one, 1); 

回答

0

对不起,我英文不好。

我猜测,TextChangedListener在一个单独的线程将一个其从所谓的,所以叫像Thread.sleep(100);可以做的工作执行?

+0

这是不正确的:它在UI线程上执行。所以睡觉不是一件好事,在执行之前会阻止整个用户界面。 – Knickedi

0

为什么不使用像这样的按钮做到这一点?该技术对用户来说似乎不太透明,并且可能会非常令人不安。我不会推荐这么做......

无论如何,你可以使用时间戳。

// somewhere in your class 
private long lastAction = 0; 
private static final long WAIT_UNTIL_ACTION = 100; 

// your listener 
name.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void afterTextChanged(Editable s) { 
     if (lastAction == 0) { 
      // initialize it 
      lastAction = System.currentTimeMillis(); 
     } else if (System.currentTimeMillis() - lastAction > WAIT_UNTIL_ACTION) { 
      lastAction = System.currentTimeMillis(); 
      // perform it here 
     } 
    } 
} 
0

我用一个简单得多的代替,输入有一个自动回车的结尾,所以只是用onKeyListner来寻找它。感谢所有的帮助!