web-dev-qa-db-ja.com

onTextChanged vs afterTextChanged in Android-ライブ例が必要です

TextWatcher in Androidプログラミングについて読んでいた。afterTextChanged()onTextChanged()の違いを理解できなかった。

TextWatcherのonTextChanged、beforeTextChanged、afterTextChangedの違い を参照しましたが、onTextChanged()ではなくafterTextChanged()を使用する必要がある状況についてはまだ考えられません。

14
SimpleGuy

これについての説明はAndroid Dev Portal

http://developer.Android.com/reference/Android/text/TextWatcher.html

**abstract void afterTextChanged(Editable s)**
This method is called to notify you that, somewhere within s, the text has been changed.

**abstract void beforeTextChanged(CharSequence s, int start, int count, int after)**
This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after.

**abstract void onTextChanged(CharSequence s, int start, int before, int count)**
This method is called to notify you that, within s, the count characters beginning at start have just replaced old text that had length before.

したがって、2つの違いは次のとおりです。

  • afterTextChangedを使用してテキストをchangeできますが、onTextChangedではできません
  • onTextChangedは、どこで変更されたかのオフセットを提供しますが、afterTextChangedは
15
SimpleGuy

コメントするのに十分な評判がないので、Pratik Dasaの答えとコメントに@SimpleGuyとの議論に何かを追加するだけです。

3つのメソッドは、EditText.setText("your string here")によってもトリガーされます。この場合、長さは16(この場合)になるため、countは常に1

パラメーターリストは、3つの方法で同じではないことに注意してください。

abstract void afterTextChanged(Editable s)
abstract void beforeTextChanged(CharSequence s, int start, int count, int after)
abstract void onTextChanged(CharSequence s, int start, int before, int count)

そして、これがafterTextChangedonTextChanged:パラメータの違いです。

このスレッドで受け入れられている答えもご覧ください: Android TextWatcher.afterTextChanged vs TextWatcher.onTextChanged

2
Annenarg