TabActivity 的onkeydown失效问题

ActivityGroup下,启动了子Activity以后父A失去了焦点,用onKeyDown重写无法捕捉到按键事件。

查阅了相关的问题,很多都是利用重写disPathKeyEvent来解决的。




其实还有一个方案:在子A下(拥有焦点的子A)重写onKeyDown,捕捉到按键事件后,回传给父A


[java]  view plain copy
  1. public onKeyDown(KeyCode code,KyeEvent evnet) {  
  2.       Activity parent = getParetn();  
  3.       parent.onKeyDown(code,event);  
  4. }  

交由父A去处理。


当键盘按下时 

首先触发dispatchKeyEvent 

然后触发onUserInteraction 

再次onKeyDown 

如果按下紧接着松开,则是俩步 

紧跟着触发dispatchKeyEvent 

然后触发onUserInteraction 

再次onKeyUp



如果在一个TabActivity中,有四个子Activity ,如果这几个Activity分别嵌套了很多Fragment , 那么在按返回键的时候就应该监听一下是否还有Fragment

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Activity parent = getParent();
if (keyCode == KeyEvent.KEYCODE_BACK
&& AActivity.this.getSupportFragmentManager()
.getBackStackEntryCount() == 0) {

return parent.onKeyDown(keyCode, event);
} else {

return super.onKeyDown(keyCode, event);
}


}

这样TabActivity的onkeydown方法就有效了

你可能感兴趣的:(TabActivity 的onkeydown失效问题)