2016-10-07 94 views
1

這就是發生了什麼事情: 活動A和B有一個EditText,它們都有IME_SEARCH。輸入只能通過SAMSUNG平板電腦上的軟鍵盤完成。 關於活動A我可以毫無問題地使用EditText。問題在於,在活動B中,我無法在「空格」或每次使用建議中的單詞後使用退格刪除文本。它的行爲就像那裏沒有文字了。如果我輸入新字符,我可以將它們刪除到空間。Android:軟鍵盤EditText上的Backspace不起作用

要點:

  1. 包含EditTexts是相同的視圖層次
  2. 構成所述IME_SEARCH處理(經由setOnEditorActionListener)的代碼是相同
  3. 兩者的TextWatcher也是相同
  4. 在清單中,兩個活動都配置爲
    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; 
      } 
     }); 

編輯2: 佈局層次結構如下。

<LinearLayout 
    ... > 

    <include layout="@layout/title_bar" /> 
    <RelativeLayout 
     ...> 
     <EditText 
      ...> 
+0

你能分享文本觀察者嗎? – toshkinl

+0

@toshkinl當然,我剛剛添加它 – luizfzs

+0

似乎很好。 「這些建議中的詞」在最後增加了空間,這就是爲什麼你不能抹去,而不是因爲這些建議。你確定這兩種佈局與EditText的活動之間沒有差異嗎? – toshkinl

回答

1

的問題是,由於某種原因,該活動B被重寫dispatchKeyEvent(),總是返回true。刪除它解決了這個問題。

相關問題