2013-06-28 57 views
0

我有這樣的代碼,它監聽ENTER和MULTIPLY,並在按下時調用一個方法。問題是它只在按下輸入時調用它,它不適用於乘法?我究竟做錯了什麼 ?dispatch dispatchKeyEvent?

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { 
     if (event.getAction() == KeyEvent.ACTION_UP) { 

      enter(); 

      return true; 
     } 




    } 
    if (event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_MULTIPLY) { 
     if (event.getAction() == KeyEvent.ACTION_UP) { 

      enter(); 

      return true; 
     } 




    } 
    return super.dispatchKeyEvent(event); 
}; 

編輯:試着與KEYCODE_STAR仍然無法正常工作..它被竊聽?

+0

有人嗎?請 –

回答

0

改用下面的onKeyDown(..)替代方法。即

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_ENTER) { 
     enter(); 
     return true; 
    } 

    if (event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_MULTIPLY) { 
     enter(); 
     return true;    
    } 

    return super.onKeyDown(keyCode, event); 
} 

退房this SO Q&A thread作進一步的解釋

+0

不工作。現在它不適用於輸入或 –

+0

你刪除/註釋dispatchKeyEvent(..)?如果不是,請這樣做然後測試。 – Chandan

+0

不行,依然不起作用 –