2017-02-13 148 views
0

我一直在嘗試捕獲過去幾個小時的Enter鍵,但我無法在偵聽器中接聽電話。我正在嘗試提供「按Enter鍵發送」。但我總是註冊OnKeyListener。幾個鍵可以隨機調用。Android無法在EditText上捕獲Enter鍵

它不是重複的,因爲所有答案都提供了相同的一組細節,這是一個標準代碼。我使用Nexus 6P

我的代碼:

public void onCreate(){ 
     //set press enter to save state 
     anEditText.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View view, int keyCode, KeyEvent event) { 
       if(keyCode == 
         EditorInfo.IME_ACTION_SEND || event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){ 
        if (new SharedPrefsManager(mContext).getBoolean(StringConstants.KEY_PRESS_ENTER_TO_SAVE, false)) { 
         Toast.makeText(mContext, "Enter pressed, to save", Toast.LENGTH_SHORT).show(); 
        } 
        return true; 
       } 
       return false; 
      } 
     }); 
} 

@OnCheckedChanged(R.id.check_enter_to_send) 
public void enterToSendChecBoxClicked(CompoundButton buttonView, boolean isChecked){ 
    // 1. set the preference 
    new SharedPrefsManager(mContext).putBoolean(StringConstants.KEY_PRESS_ENTER_TO_SAVE, isChecked); 
} 
+0

圍繞'IME_ACTION_SEND'和'KEYCODE_ENTER'嘗試括號有條件 –

+0

@ cricket_007我的onKey()本身沒有被調用,所以問題不在邏輯中。 – Ichthyocentaurs

+0

看過這個嗎? http://stackoverflow.com/a/4889059/2308683 –

回答

2

有處理軟鍵盤上的鍵盤事件,只有硬件鍵盤的API。根據Handling Keyboard Actions

注意:當處理與該KeyEvent類和相關API的鍵盤事件,你應該預料到這樣的鍵盤事件從硬件鍵盤只來了。您絕對不應該依靠軟輸入法(屏幕鍵盤)上的任何按鍵來接收按鍵事件。

+0

那麼將是怎樣的方式,實現一個TextWatcher? – Ichthyocentaurs

+0

@AkshatArora TextWatcher監聽鍵入的字符串長度的變化,而不是構建字符串的按鍵。 –

+0

我知道,我可以檢查三角洲以查看最後一個鍵是否爲「\ n」 – Ichthyocentaurs

相關問題