我想用KEYCODE_BACK調用我的主要活動的onKeyDown(),這樣它就像我自己按下'後退'按鈕一樣。我這樣做,用下面的代碼:Fake KeyEvent不能正常工作*完全像「真實」按鈕。爲什麼?
KeyEvent goBackDown = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK,0,0);
goBackDown.dispatch(activity);
SystemClock.sleep(50); // as if human pressed the key
KeyEvent goBackUp = new KeyEvent(0,0,KeyEvent.ACTION_UP,KeyEvent.KEYCODE_BACK,0,0);
goBackUp.dispatch(activity);
我的活動的的onkeydown()目前僅要求:
return super.onKeyDown(keyCode, event);
然而,不像真正返回按鈕,當「假」的代碼被調用時,該活動拒絕變得不可見。
爲什麼?
它工作。謝謝!現在我需要明白爲什麼。 :-) – srf 2011-04-22 03:52:56
@srf'public final boolean dispatch(KeyEvent.Callback receiver)'已棄用。 'public final boolean dispatch(KeyEvent.Callback receiver,KeyEvent.DispatcherState state,Object target)'理論上也可以工作,但我沒有使用它的經驗。 – Aleadam 2011-04-22 04:12:23
@Aleadam我們可以使用unicode char值創建KeyEvent對象嗎? – smartkid 2015-10-30 13:46:53