Android 开发:如何使用 onKeyUp?

2022-09-02 05:32:43

我是Android开发的新手,我似乎找不到有关如何使用听众的好指南。onKeyUp

在我的应用程序中,我有一个大,当有人按下并释放一个键时,我想调用一个函数,该函数将执行该函数。EditTextEditTextEditText

我不知道我如何使用onKeyUp。有人可以告诉我如何吗?


答案 1

最正确的方法是使用 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);

答案 2

校正:

有一段时间,我使用了一个通用的keyListener。我很快发现我的代码被调用了两次。一次是按键向下,一次是按键向上。我现在使用以下侦听器,并且只调用代码一次。 是关键。"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;
    }
};

我发现活动中的每个控件都会自动调用它。如果这是您想要的,请将其添加到活动,就像添加onKeyUp()onCreate()

例:

public boolean onKeyUp(int keyCode, KeyEvent event) {
    //do something here
    return false;
};

我知道这是一个老问题,但也许这将有助于其他人解决同样的问题。


推荐