你能让addTextChangedListner等待吗?

时间:2011-10-18 21:59:44

标签: android

有没有办法让addTextChangedListner在启动下一个intent之前等待指定的时间。 我的问题是从输入读取时,它只读取第一个字符,然后立即启动。如果它可能像“.wait(100);这是读取所有输入的时间。

非常感谢

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

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

3 个答案:

答案 0 :(得分:0)

抱歉我的英语不好。

我猜TextChangedListener在一个单独的线程中执行它所调用的线程。所以调用类似Thread.sleep(100);之类的东西可以完成这项工作吗?

答案 1 :(得分: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
        }
    }
}

答案 2 :(得分:0)

我使用了更简单的东西,输入在末尾有一个自动回车,所以只是使用onKeyListner来寻找它。谢谢你的帮助!