Реализация нескольких текстовых участков в той же деятельности
-
08-10-2019 - |
Вопрос
Я реализую Textwatcher. в Деятельность:
public class Coordinate extends Activity implements TextWatcher {
/** Called when the activity is first created. */
......
потом
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
........
Часть моей проблемы состоит в том, что имея более одного текстового пользователя, вызывает приложение к FC
txtDdLatDeg.addTextChangedListener(this);
txtDMmLatDeg.addTextChangedListener(this);
txtDMSLatDeg.addTextChangedListener(this);
потом
@Override
public void afterTextChanged(Editable s) {
String c = s.toString(); // read Content
// stuff to do later
((EditText)findViewById(R.id.txtDMSLatDeg)).setText(c);
((EditText)findViewById(R.id.txtDdLatDeg)).setText(c);
return;
} // End of TextChanged method
Мне нужно быть в состоянии обновить один Редактировать текст И иметь два других обновления на лету.
Я могу только сделать это работает, когда только один Редактировать текст имеет addChangeListener
.
Я также не могу реализовать отделение afterTextChanged
Метод для человека Редактировать текст поля.
Решение
Затем создайте их в качестве переменных экземпляров:
TextWatcher watcher1 = 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) {}
@Override
public void afterTextChanged(Editable s) { }
};
TextWatcher watcher2 = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence c, int i, int i1, int i2) {}
@Override
public void onTextChanged(CharSequence c, int i, int i1, int i2) {}
@Override
public void afterTextChanged(Editable s) { }
};
Тогда вы можете сделать:
txtDdLatDeg.addTextChangedListener(watcher1);
txtDMmLatDeg.addTextChangedListener(watcher1);
Другие советы
Хорошо, я решил это с помощью onFocus()
на Редактировать текст перед afterTextChanged
Метод:
onCreate (Bundle icicle) {
// Usual stuff here
txtDdLatDeg.addTextChangeListener(watcher1);
}
TextWatcher watcher1 = new TextWatcher() {
if (txtDdLatDeg.hasFocus()) {
@Override
public void afterTextChanged(Editable s) {
String c = s.toString();
((EditText)findViewById(R.id.txtDMSLatDeg)).setText(c);
((EditText)findViewById(R.id.txtDMmLatDeg)).setText(c);
}
}};
Я создаю переменную экземпляра для каждого Редактировать текст коробка мне нужно смотреть / манипулировать.