2017-02-26 58 views
0

因此我試圖爲具有掃描按鈕的新設備設置按鍵事件,我之前使用虛擬鍵盤工作,但無法獲得它與硬件密鑰如何使keyevent僅在出現文字時才執行點擊操作

與虛擬鍵盤在其他設備上工作的4.1版本的工作,但還沒有在新設備上工作,這是5.1

shelfnumberbox.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_NULL 
       && event.getAction() == KeyEvent.ACTION_DOWN) { 
      btn_aprove.performClick(); 
     } 
     return false; 

    } 
}); 
} 

什麼,我想自己動手

shelfnumberbox.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_NULL 
        && event.getAction() == KeyEvent.KEYCODE_BUTTON_A) { 
       btn_aprove.performClick(); 
      } 
      return false; 

     } 
    }); 

} 

API的功能齊全的硬件KeyEvent的

public boolean onKeyUp(int keyCode, KeyEvent event) { 
    // TODO Auto-generated method stub 
    switch (keyCode) { 
    case KeyEvent.KEYCODE_BUTTON_A: 
     if(isOnResume && scanCase != START_TEST_CASE){ 
      mDecoderMgr.dispatchScanKeyEvent(event); 
     } 
     isScanKeyDown = false; 
     return true; 
    default: 
     return super.onKeyUp(keyCode, event); 
    } 
} 

回答

0

簡單地檢查是否有文本進行點擊事件之前:

if (v.getText().toString().length() > 0) { 
    btn_aprove.performClick(); 
} 

這樣:

if (actionId == EditorInfo.IME_NULL 
      && event.getAction() == KeyEvent.ACTION_DOWN) { 
     if (v.getText().toString().length() > 0) { 
      btn_aprove.performClick(); 
     } 
    } 
+0

所以沒有辦法得到它與關鍵事件一起工作? –

+0

已更新的答案。只需使用if語句包裝'performClick',或將其添加到父if語句。 – zed

+0

沒有工作 –

相關問題