public class MainActivity extends AppCompatActivity {
private EditText addressTextBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addressTextBox = (EditText) findViewById(R.id.editText);
addressTextBox.addTextChangedListener(addressWatcher);
}
private final TextWatcher addressWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
addressTextBox.setText("dsa");
}
@Override
public void afterTextChanged(Editable s) {
}
};
}
当我更改文本时,它显示我的应用程序没有响应等待/关闭。
s
方法中onTextChanged
代表什么?答案 0 :(得分:0)
我可能错了,但似乎是:
public void onTextChanged(CharSequence s, int start, int before, int count) {
addressTextBox.setText("dsa");
}
会不断触发自己。意思是文本发生了变化,运行了这个函数,它改变了运行这个函数的文本,等等。
答案 1 :(得分:0)
转到logcat并找到堆栈跟踪,它会告诉您发生了什么。问题可能是因为你在onTextChanged中设置了文本。我不认为这是允许的(我认为你只能在afterTextChanged中更改它),即使它会导致无限递归(因为更改会再次调用观察者)。
至于编辑字段中的文本是什么。阅读https://jsfiddle.net/qr3ao2e3/