Android开发:如何使用onKeyUp?

Ale*_*eAP 18 java android onkeyup

我是Android开发的新手,我似乎无法找到关于如何使用onKeyUp监听器的好指南.

在我的应用程序中,我有一个很大的EditText,当有人按下并释放一个键,EditText我想调用一个函数,将执行正则表达式EditText.

我不知道我是如何使用onKeyUp的.有人可以告诉我怎么样?

Dam*_*jan 29

正确的方法是使用TextWatcher类.

EditText tv_filter = (EditText) findViewById(R.id.filter);

TextWatcher fieldValidatorTextWatcher = new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (filterLongEnough()) {
                populateList();
            }
        }

        private boolean filterLongEnough() {
            return tv_filter.getText().toString().trim().length() > 2;
        }
    };
    tv_filter.addTextChangedListener(fieldValidatorTextWatcher);
Run Code Online (Sandbox Code Playgroud)


R H*_*hes 11

更正:

有一段时间,我使用了泛型onKeyListener.我很快发现我的代码被调用了两次.一旦按下按键,一次按下按键.我现在使用以下监听器,只调用一次代码. "if (event.getAction() == KeyEvent.ACTION_UP)"是关键.

OnKeyListener keyListener = new OnKeyListener() {

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_UP) {
            //do something here
        }
        return false;
    }
};
Run Code Online (Sandbox Code Playgroud)

我发现onKeyUp()自动调用Activity中的每个控件.如果这是你想要的,就像添加它一样将它添加到Activity中onCreate()

例:

public boolean onKeyUp(int keyCode, KeyEvent event) {
    //do something here
    return false;
};
Run Code Online (Sandbox Code Playgroud)

我知道这是一个老问题,但也许这会帮助其他人解决同样的问题.