2

アプリを 2.2 から 3.x に移行するとTextWatcher、検証のために使用していた EditText の 1 つが正しく動作しません。つまり、ユーザーがクリックしてEditText単語全体が「提案モード」(下線が引かれている場所) になると、TextWatcher の観点から EditText から効果的に削除され、空の EditText に対して行うテキスト検証チェックがトリガーされます。 . コード:

mText = (EditText) findViewById(R.id.inpt_title);
mText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
        final String title = editable.toString();
    Log.d(LOG_TAG, "addTextChangedListener(): title: " + title + ", length: " + title.length());
    if (title.length() == 0) {
    // empty title
    mText.setError(getString(R.string.error_note_title_empty));
    }
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    mText.setTextColor(getResources().getColor(R.color.black));
}

@Override
public void onTextChanged(CharSequence s, int start, int count, int after) {}
});

私は提案を機能させ続けたいと思っていますが、ここには奇妙な相互作用があるようです.

a) 単語全体が「提案モード」にあるときに EditText が空にならないようにする方法、または少なくとも EditText が「提案」状態にあるかどうかを確認して、EditText が本当に空であるかどうかを判断する方法、または b )提案をオフにしますか?android:inputType="text|textCapWords|textNoSuggestions"問題の EditText を試し、mText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);上記のコードで設定しましたが、Lenovo 3.1 タブレットで引き続き提案が行われます。

アップデート:

API 14isInputMethodTarget()が EditText にメソッドを追加したことがわかります。これを使用して、アクティブな提案を確認し、検証を無効にできます... しかし、API 12 に対して実行しています。おそらく、IME を直接チェックして、提案がアクティブかどうかを確認できますか?

4

0 に答える 0