Android:如何区分setText和手动输入的文本

时间:2013-05-03 10:04:06

标签: android android-edittext settext

我有一个EditText。在按钮单击时调用EditText的setText()方法。如果使用按钮点击或用户手动输入位置,我想要识别。 我使用了TextWatcher,如果用户手动输入位置和使用setText,则调用afterTextChange()。

如果手动编辑或编程编辑editext,是否可以识别场景。

请帮忙。

在期待中感谢你。

3 个答案:

答案 0 :(得分:3)

你可以这样做:

private boolean isTextSetProgrammatically = false;

private void setTextProgrammatically(String text){

myEditText.removeTextChangedListener(instanceOfMyTextWatcher);
myEditText.setText(text);
isTextSetProgrammatically = true;
myEditText.addTextChangedListener(instanceOfMyTextWatcher)

}

然后还为您的EditText设置TextWatcher,并在isTextSetProgrammatically被触发时将onTextChanged()设置为false。

答案 1 :(得分:0)

使用textwatcher以及Ahmad的建议。如果在编辑文本中使用类型,您将知道。

   EditText search= (EditText) findViewById(R.id.search);
   search.addTextChangedListener(new TextWatcher() {

       public void onTextChanged(CharSequence s, int start, int before, int count) {
                 // s is the typed character sequence.   

       }

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


         }

         public void afterTextChanged(Editable s) {
         }
        });

答案 2 :(得分:-2)

您可以编写自定义EditText扩展EditText并覆盖setText()方法。

@override
public void setText(CharSequence str) {
   super.setText(...);
   // to do you callback
}