2011-01-09 56 views
0

我在活動實施TextWatcher同一活動實現多個TextWatchers:

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

部分原因是,有一個以上的TextChangedListener導致應用程序到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 

我需要能夠更新一個的EditText和對飛行的其他兩個更新。
我只能使它工作時只有一個EditTextaddChangeListener
我也似乎無法實現個別EditText字段的單獨的afterTextChanged方法。

回答

4

然後創建爲實例變量:

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); 
+0

不知道爲什麼,但我仍然無法得到這與聲明的多個addTextChangedListener一起工作......我會繼續努力。 – RotorDroid 2011-01-09 02:13:17

2

好吧,我解決了這個由afterTextChanged方法之前,對的EditText使用onFocus()

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

我創建了一個in每個姿態變量EditText框我需要觀看/操作。