0
У меня был бы OnFocusChangeListener
Класс, который добавляет TextWatcher
Слушатель EditText, который имеет фокус и удаляет его, когда нет. Я сделал это, но приложения removeListener
аварии (я не уверен, о синтаксисе ... новичку здесь)добавить TextWatcher Listerner на сфокусированный взгляд и удалить его, если нет
MyOnFocusChangeListener:
public class Listener_Water_EdText_OnClick extends Fragment_Eau implements View.OnFocusChangeListener {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (v.getId() == R.id.et_wDebit && hasFocus) {
et_wDebit.addTextChangedListener(new Listener_Water_EdText_TxtWatcher(et_wDebit));
} else {
et_wDebit.removeTextChangedListener(new Listener_Water_EdText_TxtWatcher(et_wDebit));
}
if (v.getId() == R.id.et_wPuissance && hasFocus) {
et_wPuissance.addTextChangedListener(new Listener_Water_EdText_TxtWatcher(et_wPuissance));
} else {
et_wPuissance.removeTextChangedListener(new Listener_Water_EdText_TxtWatcher(et_wPuissance));
}
}
}
и просто для информации, Мой TextWatcherListener:
public class Listener_Water_EdText_TxtWatcher extends Fragment_Eau implements TextWatcher {
private EditText et;
public Listener_Water_EdText_TxtWatcher(EditText et) {
this.et = et;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
Log.i("afterTextChanged", s.toString());
Log.i("Wcalc.PdcMax", WCalc.getPdCMaxToString());
switch (et.getId()) {
case R.id.et_wTetaAller:
try {
WCalc.setTetaAller(Integer.valueOf(s.toString()));
} catch (Exception e) {
WCalc.setTetaAller(0);
}
if (WCalc.getDebit() > 0) {
//Mise à jour de la puissance afin de relancer le calcul avec le nouveau dTeta
WCalc.setPuissance(WCalc.getPuissance());
et_wDebit.setText(WCalc.getDebitToString());
//Affichage des résultats du calcul
setResults();
}
break;
case R.id.et_wTetaRetour:
try {
WCalc.setTetaRetour(Integer.valueOf(s.toString()));
} catch (Exception e) {
WCalc.setTetaRetour(0);
}
if (WCalc.getDebit() > 0) {
//Mise à jour de la puissance afin de relancer le calcul avec le nouveau dTeta
WCalc.setPuissance(WCalc.getPuissance());
et_wDebit.setText(WCalc.getDebitToString());
//Affichage des résultats du calcul
setResults();
}
break;
case R.id.et_wPuissance:
try {
WCalc.setPuissance(Float.valueOf(s.toString()));
} catch (Exception e) {
WCalc.setPuissance(0);
}
et_wDebit.setText(WCalc.getDebitToString());
//Affichage des résultats du calcul
if (WCalc.getPuissance() > 0) {
setResults();
} else {
setNA();
}
break;
case R.id.et_wDebit:
try {
WCalc.setDebit(Float.valueOf(s.toString()));
} catch (Exception e) {
WCalc.setDebit(0);
}
et_wPuissance.setText(WCalc.getPuissanceToString());
//Affichage des résultats du calcul
if (WCalc.getDebit() > 0) {
setResults();
} else {
setNA();
}
break;
}
}
Заранее спасибо.
Ницца! Спасибо за ваш ответ. – Torp13
У меня есть еще одна проблема с этим: когда я вращаю устройство, Texwatcher больше не срабатывает ... Однако ошибок нет, все кажется ОК. – Torp13
Вы должны добавить конфигурацию: изменить <активность android: name = ". TwitterActivity" android: label = "@ string/app_name" android: configChanges = "keyboardHidden | ориентация | размер | навигация" /> –