Реализация нескольких текстовых участков в той же деятельности

StackOverflow https://stackoverflow.com/questions/4636947

Вопрос

Я реализую 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);     
        }
}};

Я создаю переменную экземпляра для каждого Редактировать текст коробка мне нужно смотреть / манипулировать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top