Pregunta

Me implementar TextWatcher en el Actividad

public class Coordinate extends Activity implements TextWatcher {
/** Called when the activity is first created. */
......

Entonces

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ........

Una parte de mi problema es que tener más de un TextChangedListener hace que la aplicación de FC

txtDdLatDeg.addTextChangedListener(this);
txtDMmLatDeg.addTextChangedListener(this);
txtDMSLatDeg.addTextChangedListener(this);

Entonces

@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

Tengo que ser capaz de actualizar un EditarTexto y tienen los otros dos al día sobre la marcha.
Sólo puedo parecer hacer que funciona cuando sólo un EditarTexto tiene el addChangeListener.
También me parece que no puede poner en práctica un método afterTextChanged separado para el individuo EditarTexto campos.

¿Fue útil?

Solución

A continuación, crearlos como variables de instancia:

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) { }
};

A continuación, puede hacer:

txtDdLatDeg.addTextChangedListener(watcher1);
txtDMmLatDeg.addTextChangedListener(watcher1);

Otros consejos

Ok, lo resuelve mediante el uso de onFocus() en el EditarTexto antes del método 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);     
        }
}};

crear una variable de instancia para cada EditarTexto Caja necesito para ver / manipular.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top