1

我正在設計一個android鍵盤,並且難以從鍵盤啓動一個動作命令。使用軟鍵盤上的「ENTER」鍵啓動一個事件

當我在我的設備上使用互聯網並按在輸入網址後輸入而不是進入新頁面時,顯示空格並且不執行任何操作。我不知道如何讓我的輸入鍵在按下時變成操作鍵。

此處,我認爲它應該被改變的代碼:

@Override 
public void onKey(int primaryCode, int[] keyCodes) { 
    InputConnection ic = getCurrentInputConnection(); 
    switch (primaryCode) { 

    case Keyboard.KEYCODE_SHIFT: 
     handleShift(); 
     break; 

    case 10: 
     //Initiate enter event or new line depending on program being used 
     break; 
    } 
} 

任何幫助,將不勝感激。

回答

1

好吧,感謝喬治Rappel - 我被送往正確的方向。我在在線android源代碼中找到了我的解決方案 - 爲此尋找了一些東西。下面是輸入代碼 - 即ENTER是值10

case ENTER: 

     final EditorInfo editorInfo = getCurrentInputEditorInfo(); 
     final int imeOptionsActionId = InputTypeUtils.getImeOptionsActionIdFromEditorInfo(editorInfo); 
     if (InputTypeUtils.IME_ACTION_CUSTOM_LABEL == imeOptionsActionId) { 
      // Enter used as submission 
      ic.performEditorAction(editorInfo.actionId); 
     } else if (EditorInfo.IME_ACTION_NONE != imeOptionsActionId) { 
      // Not quite sure what this is for 
      ic.performEditorAction(imeOptionsActionId); 
     } else { 
      // Enter being used as text 
      ic.commitText(String.valueOf((char) primaryCode), 1); 
     } 
     break; 

我也複製從中文版在線存儲庫中找到的類InputTypeUtils.java必要的方法。

+0

對不起,不能回答,但我已經很高興幫助某種方式。祝你的發展順利:) – George

0

您正在使用KEYCODE_SHIFT,這實際上是將鍵盤從大寫更改爲小寫的那個。輸入密鑰應該是KEYCODE_ENTER,它的值是66,而不是10.

case 10將是KEYCODE_3,數字3,不進入。 See here


你有正確的代碼,你所要做的就是改變KEYCODE並添加你想要的代碼行。

@Override 
public void onKey(int primaryCode, int[] keyCodes) { 

    switch (primaryCode) {  
     case KeyEvent.KEYCODE_ENTER: 
      // Enter has been pressed 
     break; 
    } 
} 
+1

真正的行是'KeyEvent.KEYCODE_ENTER'。另外,我不知道case語句中的代碼行是什麼。這是我真正的問題:) – sometimes24

+0

@有時候24我的錯誤,對不起。但你究竟想要什麼?按下ENTER鍵並開始另一個鍵的事件? – George

+0

由於它是一個鍵盤,當我按下ENTER鍵時 - 我想啓動一個動作按鈕。我可能沒有解釋清楚,所以希望我的例子有道理。如果我在Internet應用程序中並且正在輸入超鏈接,我希望在按ENTER時啓動搜索命令而不是我看到的空格字符(因爲它沒有正確編程)。 – sometimes24