【问题标题】:How do listen EditText?如何收听 EditText?
【发布时间】:2012-03-07 07:58:52
【问题描述】:

我有一个EditText。当用户在更改 EditText 时按下 Enter 键时,我希望做点什么。我怎样才能做到这一点?

最简单的方法:

final EditText edittext = (EditText) findViewById(R.id.edittext);
edittext.setOnKeyListener(new OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
            (keyCode == KeyEvent.KEYCODE_ENTER)) {
          // Perform action on key press
          Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show();
          return true;
        }
        return false;
    }
});

【问题讨论】:

  • 好的,如何比较 CharSequence 和 Key Enter?

标签: java android android-edittext


【解决方案1】:

文本观察器示例代码

your_edittext.addTextChangedListener(new InputValidator());

    private class InputValidator implements TextWatcher {

        public void afterTextChanged(Editable s) {

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

        }    
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {

        }    
    }    
}

【讨论】:

    【解决方案2】:

    首先,创建一个OnEditorActionListener(例如作为私有实例变量):

    private TextView.OnEditorActionListener mEnterListener =
        new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if (actionId == EditorInfo.IME_NULL && event.getAction() == KeyEvent.ACTION_DOWN) { 
                    /* If the action is a key-up event on the return key, do something */
                }
            return true;
        });
    

    然后,设置监听器(即在您的 onCreate 方法中):

    EditText mEditText = (EditText) findViewById(...);
    mEditText.setOnEditorActionListener(mEnterListener);
    

    【讨论】:

    【解决方案3】:

    另一种选择是:

     your_edittext.addTextChangedListener(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) {
    
           }
          });
    

    【讨论】:

      【解决方案4】:

      为此,您需要使用 TextWatcher。这是一个关于如何使用 TextWatcher 和 Android textwatcher API 的示例。

      【讨论】:

      • 哦,是的!非常感谢。这是一个不错的决定。
      【解决方案5】:
      your_edittext.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              //do something
          }
      
      });
      

      【讨论】:

      • 不,它不起作用。当用户在 EditText 中键入一些文本时,我需要听键盘上的 ENTER 键。我不在乎用户何时会触摸屏幕。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 2019-11-04
      • 2022-01-14
      相关资源
      最近更新 更多