-5

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

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

请帮忙。

感谢你在期待。

4

3 回答 3

3

你可以这样做:

private boolean isTextSetProgrammatically = false;

private void setTextProgrammatically(String text){

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

}

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

于 2013-05-03T10:12:56.793 回答
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) {
         }
        });
于 2013-05-03T10:14:33.253 回答
-2

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

@override
public void setText(CharSequence str) {
   super.setText(...);
   // to do you callback
}
于 2013-05-03T10:13:45.207 回答