当我在第一个EditText值中输入输入时,我有两个EditText也将在第二个EditText中显示,反之亦然。当我输入第一个edittext值时,在第二个edittext中显示但是当我尝试输入第二个编辑文本时,值不是显示和应用程序没有响应。我尝试多次添加TextWatcher并从另一个编辑文本中删除但无法解决问题。非常感谢您的帮助。
etuptext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
et_bottom.setText(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
et_bottom.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
// etuptext.setText(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
答案 0 :(得分:1)
使用查看hasFocus()
方法查看其他EditText
具有焦点的天气。如果没有,则设置文本否则什么也不做。
以下是工作代码:
etuptext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (!et_bottom.hasFocus())
et_bottom.setText(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
et_bottom.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (!etuptext.hasFocus())
etuptext.setText(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
答案 1 :(得分:0)
嗨,您需要检查是否反映了EditText不应该是焦点。
$entries = "";
$filename = "test.txt";
foreach($_POST as $value) {
if( is_array( $value ) ) {
foreach( $value as $subvalue ) {
if (strlen($subvalue) > 5) {
$entries .= $subvalue . PHP_EOL;
}
}
}
}
file_put_contents($filename, $entries);
所有这一切都发生了,因为当您尝试将文本设置为EditText时,它会获得焦点并在第一个和第二个中写入将请求焦点,因此应用程序将进入无响应模式。
答案 2 :(得分:0)
在设置文本之前删除TextWatchers。设置完文本后,再次添加TextWatcher。
在伪代码中:
TextWatcher edittext1watcher = null;
TextWatcher edittext2watcher = null;
edittext1watcher = new TextWatcher () {
...
public void onTextChanged(.....) {
edittext2.removeTextChangedListener(edittext2watcher);
edittext2.setText(...);
edittext2.addTextChangedListener(edittext2watcher);
}
};
edittext2watcher = new TextWatcher () {
...
public void onTextChanged(.....) {
edittext1.removeTextChangedListener(edittext1watcher);
edittext1.setText(...);
edittext1.addTextChangedListener(edittext1watcher);
}
};
edittext1.addOnTextChangedListener(edittext1watcher);
edittext2.addOnTextChangedListener(edittext2watcher);