Frage

ich implementieren TextWatcher in der Aktivität :

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

Dann

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

Ein Teil meines Problems ist, dass mehr als ein TextChangedListener mit bewirkt, dass die App FC

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

Dann

@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

Ich muss in der Lage sein, einen zu aktualisieren EditText und haben die beiden anderen Update on the fly.
Ich kann nur scheint es funktioniert zu machen, wenn nur ein EditText die addChangeListener hat.
Ich kann auch nicht scheinen, eine separate afterTextChanged Methode für den einzelnen EditText Felder aus.

zu implementieren
War es hilfreich?

Lösung

Dann erstellen sie als Instanzvariablen:

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

Dann können Sie tun:

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

Andere Tipps

Ok, ich löste dies durch onFocus() mit auf dem EditText vor der afterTextChanged Methode:

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

ich eine Instanzvariable erstellen für jedes EditText Box Ich beobachte müssen / manipulieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top