0

指定された入力文字を処理し、ボックスをクリアして、別の文字を処理する準備をしようとしています。

アプリは、常に最大 1 文字の EditBox を使用します。ユーザーが新しい文字を入力すると、リスナーが起動します。そのリスナー (TextWatcher) の afterTextChanged メソッドは、入力された文字を処理し、テキストをクリアします。その後、テキスト ボックスをクリアし、次のメッセージをリッスンできるようにします。しかし、その後も発砲し続けます。1 回おきの発火のみを処理するようにフラグを設定しようとしましたが、時々それが不正で奇数回発火し、フラグが間違って反転することがあります。

@Override
public void afterTextChanged(Editable arg0) {
    if (arg0.length() > 0) {
        //if (mToggle)
        {
            act.checkText(arg0.toString().substring(arg0.length() - 1));
            text.setText("");
        }
        mToggle = !mToggle; // to catch extra fire-off
    }
}

mToggle は TextWatcher 実装のプロパティ変数です。

1) なぜ複数発砲するのですか?

2) 代わりにここで何をする必要がありますか?

どうもありがとう、
ネイサン

4

1 に答える 1

0

まず、それはなぜか

if (mToggle)

コメントアウト?

次に、次の場合にのみ mToggle を false に設定する必要があります。

if (mToggle) {

      act.checkText(arg0.toString().substring(arg0.length() - 1));
      text.setText("");
      mToggle = false; // to catch extra fire-off

}

次に、コードの別の場所 (ユーザーが別の editBox をクリックしたときに、mToggle を true に戻すことができます。これにより、if (mToggle) 条件をもう一度実行できます。

于 2013-06-22T01:57:33.740 に答える