从KeyListener更改为TextWatcher

时间:2014-06-05 19:13:27

标签: android textwatcher

我的应用只包含一个文本字段,只要#34; 1"按下它,"你好,世界"进一步写在上面。我用过:

et.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_1)) {
            et.setText("Hello, world!");
            current_string = et.getText().toString();
            length = current_string.length();
            et.setSelection(length);
            return true;
        }
        return false;
    }
});

但我想改用TextWathcer。我使用:

et1.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {

            //if statement here I guess
            et.setText(et.getText() + "Hello, world");
        }
    });

但是我在查找if语句时遇到了一些问题。你能给我一些提示吗?非常感谢

1 个答案:

答案 0 :(得分:2)

当您输入' 1'关键,你想展示' Hellow World'在TextView上。是吗?

@Override
     public void afterTextChanged(Editable s) {

     //if statement here I guess
     et.setText(et.getText() + "Hello, world");
}

可编辑的s将返回您在Textfield上输入的文本。我想如果你只使用TextViews,

上一个将是解决它的更好方法。我想帮助你,一起搞清楚!!

更新1:

 @Override
 public void afterTextChanged(Editable s) {
      if(s.toString().equals('1')){
           et.setText(s.toString() + "Hello, world");
      }
      //et.setText(et.getText() + "Hello, world");
 }

更新2:

 @Override
 public void afterTextChanged(Editable s) {
      if(s.toString().contains("1")){
           et.setText(s.toString().replace("1", "Hellow World"));
      }
      //et.setText(et.getText() + "Hello, world");
 }

我希望它能运作良好。