2016-10-07 13 views
1

これはどういうことか: アクティビティAとBはEditTextであり、どちらもIME_SEARCHです。入力は、SAMSUNGタブレットのソフトキーボードを介してのみ行われます。 アクティビティAについてEditTextは問題なく使用できます。問題は、アクティビティBでは、「スペース」を押した後、または提案から単語を使用するたびに、バックスペースでテキストを消去できないということです。もうテキストがないように振る舞います。新しい文字を入力すると、スペースまで消去できます。Android:ソフトキーボードEditTextのバックスペースが機能しない

重要事項:

  1. EditTextsが同一である含むビュー階層
  2. 両方のTextWatcherも同一である(setOnEditorActionListenerを介して)IME_SEARCH処理を構成するコードが同一である
  3. マニフェストでは、両方のアクティビティがコンフィグレーションであり、
    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 
      ...> 
+0

テキストウォッチャーを共有できますか? – toshkinl

+0

@toshkinl確かに、私はちょうどそれを追加しました – luizfzs

+0

良いと思われます。 「提案からの単語」は最後にスペースを追加します。その理由は、それが提案からのものではなく、消去できないからです。 2つのレイアウトとEditTextに関するアクティビティの間に違いはありませんか? – toshkinl

答えて

1

問題は、何らかの理由で、活動BはdispatchKeyEvent()をオーバーライドし、常にtrueを返していました、ということでした。それを削除すると問題が解決しました。

関連する問題