@Sebastian Rothの回答で提案されている解決策はTextWatcher
、一部のインスタンスの1つではありませんEditTexts
。これは、nの1つのクラスとそのクラスのn個のインスタンスですEditTexts
。
各EditTextには、独自のSpannableがあります。TextWatcher
のイベントには、このSpannableがs
パラメータとして含まれています。それらのhashCode(各オブジェクトの一意のID)を確認します。myEditText1.getText()は、そのSpannableを返します。したがって、それとmyEditText1.getText().hashCode()
等しい場合、それはに属するs.hashCode()
ことを意味しますs
myEditText1
したがって、TextWatcher
一部のインスタンスを1つ作成する場合は、EditTexts
次を使用する必要があります。
private TextWatcher generalTextWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (myEditText1.getText().hashCode() == s.hashCode())
{
myEditText1_onTextChanged(s, start, before, count);
}
else if (myEditText2.getText().hashCode() == s.hashCode())
{
myEditText2_onTextChanged(s, start, before, count);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
if (myEditText1.getText().hashCode() == s.hashCode())
{
myEditText1_beforeTextChanged(s, start, count, after);
}
else if (myEditText2.getText().hashCode() == s.hashCode())
{
myEditText2_beforeTextChanged(s, start, count, after);
}
}
@Override
public void afterTextChanged(Editable s) {
if (myEditText1.getText().hashCode() == s.hashCode())
{
myEditText1_afterTextChanged(s);
}
else if (myEditText2.getText().hashCode() == s.hashCode())
{
myEditText2_afterTextChanged(s);
}
}
};
と
myEditText1.addTextChangedListener(generalTextWatcher);
myEditText2.addTextChangedListener(generalTextWatcher);