4

無限ループを防ぐために、私はこれと同じくらい醜いことをしました...

    @Override
protected void onTextChanged(CharSequence text, int start,
        int lengthBefore, int lengthAfter) {

    String t = text.toString();
    String tt = t.toUpperCase();

    if (!t.equals(tt)) {

        setText(tt);
    }

    super.onTextChanged(text, start, lengthBefore, lengthAfter);
}

onTextChanged内のテキストを変更するときに が呼び出されないようにする他の方法はありますonTextChangedか?

4

1 に答える 1

6

テキストが一度変更されたかどうかを指定するフラグを使用できます。一度変更した場合は、再度変更しないでください。それ以外の場合は変更してください。

int flag_text=0;
protected void onTextChanged(CharSequence text, int start,
    int lengthBefore, int lengthAfter) {

    if (flag_text==0) {
        flag_text=1;
        setText(tt);
    }
    super.onTextChanged(text, start, lengthBefore, lengthAfter);
}
于 2012-02-20T07:37:18.537 に答える