如何在android上捕获KeyEvents?

发布于 2025-01-05 15:24:45 字数 375 浏览 4 评论 0原文

我需要监听 EditText 上的事件,

  1. 当用户开始输入时
  2. 以及当焦点丢失时,

我尝试了这个,但它不起作用。我到底哪里搞错了?

etTo.setOnKeyListener(new OnKeyListener(){

    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if(event.getAction() ==KeyEvent.ACTION_DOWN){
            etTo.setText("");
        }
    return false;
    }           
});

I need to listen to events on a EditText

  1. when users start typing
  2. and when focus is lost

I tried this and it does not work. What have I got it wrong?

etTo.setOnKeyListener(new OnKeyListener(){

    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if(event.getAction() ==KeyEvent.ACTION_DOWN){
            etTo.setText("");
        }
    return false;
    }           
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

荒路情人 2025-01-12 15:24:45

对于第一个,你可以尝试这个:

   myEditText.addTextChangedListener(new TextWatcher() {
 public void afterTextChanged(Editable s) {
   //do something
}

  public void beforeTextChanged(CharSequence s, int start, int count, int after){
   //do something
 }

public void onTextChanged(CharSequence s, int start, int before, int count) { 
   //do something
}
});

对于第二个,你可以尝试这个:

     myEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {

            yourcalc();

            return true;
        }
        return false;
    }
});

For the first one you could try this:

   myEditText.addTextChangedListener(new TextWatcher() {
 public void afterTextChanged(Editable s) {
   //do something
}

  public void beforeTextChanged(CharSequence s, int start, int count, int after){
   //do something
 }

public void onTextChanged(CharSequence s, int start, int before, int count) { 
   //do something
}
});

for second one try this:

     myEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {

            yourcalc();

            return true;
        }
        return false;
    }
});
清旖 2025-01-12 15:24:45

尝试

etTo.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // TODO Auto-generated method stub

            }
        });

用于检查焦点和

etTo.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                // TODO user start to typing text

            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO cursor is into the EditText

            }

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub

            }
        });

Try to use

etTo.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // TODO Auto-generated method stub

            }
        });

for checking focus and

etTo.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                // TODO user start to typing text

            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO cursor is into the EditText

            }

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub

            }
        });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文