Tout d'abord, vous pouvez voir si l'utilisateur a fini de modifier le texte si le bouton EditText
perd le focus ou si l'utilisateur appuie sur le bouton "done" (cela dépend de votre implémentation et de ce qui vous convient le mieux). Deuxièmement, vous ne pouvez pas obtenir un EditText
au sein de la TextWatcher
seulement si vous avez déclaré le EditText
comme un objet d'instance. Même si vous ne devez pas modifier le EditText
au sein de la TextWatcher
parce que ce n'est pas sûr.
EDIT :
Pour pouvoir obtenir le EditText
dans votre TextWatcher
la mise en œuvre, vous devriez essayer quelque chose comme ça :
public class YourClass extends Activity {
private EditText yourEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
yourEditText = (EditText) findViewById(R.id.yourEditTextId);
yourEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
// you can call or do what you want with your EditText here
// yourEditText...
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
}
}
Notez que l'exemple ci-dessus peut comporter quelques erreurs, mais je voulais simplement vous montrer un exemple.
2 votes
Essayez d'ajouter le focus listener, quand le editText prend le focus, cela signifie que l'utilisateur a commencé à le modifier, et quand le editText perd le focus, cela signifie que la modification est terminée
0 votes
github.com/henrychuangtw/AutoInsertEditText