Android开发:如何使用onKeyUp?

新手上路,请多包涵

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

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

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

原文由 AlexPriceAP 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 710
2 个回答

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

原文由 Damjan 发布,翻译遵循 CC BY-SA 3.0 许可协议

更正:

有一段时间,我使用了通用的 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;
    }
};

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

例子:

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

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

原文由 R Hughes 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题