Android ActivityGroup TabActivity Back键的处理

在使用ActivityGroup时,可以发现,当我们在每个子Activity中覆写了onBackPressed()方法以期望处理back键在不同tab之间的操作后,实际应用中按下back之后并不会调用子Activity中的onBackPressed()而是直接退出程序,实际上按下back之后程序调用了ActivityGroup Activity中的onBackPressed(),所以我们应该在ActivityGroupActivity中将back事件分发给子Activity处理


解决方法:

在ActivityGroup Activity中添加该方法:

[java]  view plain copy
  1. @Override    
  2.     public void onBackPressed() {           
  3.         //把后退事件交给子Activity处理    
  4.         this.getLocalActivityManager().getCurrentActivity().onBackPressed();    
  5.     }  

这样,当 ActivityGroup Activity捕获back事件后就会调用当前界面的子Activity中的onBackPressed()方法,接下来要做的就是根据你app的需求在不同的子Activity中的onBackPressed()方法写不同的事件处理。


然而在使用TabActivity时, 可以发现,当我们在TabActivity中覆写了onBackPressed()或onKeyDown()方法时,实际应用中按下back之后并不会调用TabActivity中的onBackPressed()onKeyDown(),实际上按下back之后程序调用了子Activity中的onBackPressed()和onKeyDown(),所以我们应该在TabActivity用下面这个函数拦截子Activity的返回操作。

@Override
        public boolean dispatchKeyEvent(KeyEvent event) {
                 if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
                                 //do something
                 }
                 return super.dispatchKeyEvent(event);
        }



你可能感兴趣的:(Android ActivityGroup TabActivity Back键的处理)