我有一个EditText。在按钮单击时调用EditText的setText()方法。如果使用按钮点击或用户手动输入位置,我想要识别。 我使用了TextWatcher,如果用户手动输入位置和使用setText,则调用afterTextChange()。
如果手动编辑或编程编辑editext,是否可以识别场景。
请帮忙。
在期待中感谢你。
答案 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
}