これはどういうことか: アクティビティAとBはEditText
であり、どちらもIME_SEARCH
です。入力は、SAMSUNGタブレットのソフトキーボードを介してのみ行われます。 アクティビティAについてEditText
は問題なく使用できます。問題は、アクティビティBでは、「スペース」を押した後、または提案から単語を使用するたびに、バックスペースでテキストを消去できないということです。もうテキストがないように振る舞います。新しい文字を入力すると、スペースまで消去できます。Android:ソフトキーボードEditTextのバックスペースが機能しない
重要事項:
EditTexts
が同一である含むビュー階層- 両方の
TextWatcher
も同一である(setOnEditorActionListener
を介して)IME_SEARCH
処理を構成するコードが同一である - マニフェストでは、両方のアクティビティがコンフィグレーションであり、
android:configChanges="keyboardHidden|keyboard|orientation" android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified"
私は両方TextWatcher
の方法beforeTextChanged
にブレークポイントを設定します。私は「スペース」を挿入し、「バックスペース」をヒットしました。アクティビティAのEdittext
では、メソッドがトリガされますが、アクティビティBではトリガされません。 Edittext
の両方のプロパティが同じように設定されているため、この理由がわかりません。 私はまた、IME
オプションを削除しようとしましたが、動作は同じに保たれました。
何が起こっている可能性がありますか?
EDIT 1:
searchTxt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() == 0) {
btnClear.setVisibility(View.GONE);
} else{
btnClear.setVisibility(View.VISIBLE);
}
}
});
searchTxt.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
buildGrid();
return true;
}
return false;
}
});
EDIT 2: レイアウト階層は、次の通りです。
<LinearLayout
... >
<include layout="@layout/title_bar" />
<RelativeLayout
...>
<EditText
...>
テキストウォッチャーを共有できますか? – toshkinl
@toshkinl確かに、私はちょうどそれを追加しました – luizfzs
良いと思われます。 「提案からの単語」は最後にスペースを追加します。その理由は、それが提案からのものではなく、消去できないからです。 2つのレイアウトとEditTextに関するアクティビティの間に違いはありませんか? – toshkinl