アプリを 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 を直接チェックして、提案がアクティブかどうかを確認できますか?