ActivityGroup的子Activity获取焦点处理可以把ActivityGroup的bodyView(放置子Activity的布局)设置为可聚焦:
android:focusable="true"
android:focusableInTouchMode="true"
然后再在OnCreate方法中
bodyView.requestFocus();
这就会进入这个ActivityGroup的每个子Activity时能够响应自己的OnKeyDown方法。
我们可以禁用子Activity的OnKeyDown方法即返回false
public boolean onKeyDown(int keyCode, KeyEvent event) { // 按下键盘上返回按钮 if (keyCode == KeyEvent.KEYCODE_BACK) { Log.i("test", "购买界面的返回键"); return false; } else { Log.i("test", "购买界面的返回键false"); return super.onKeyDown(keyCode, event); } }
我们只需在ActivityGroup中继承OnKeyDown方法,根据子Activity的id处理每个子Activity的返回事件。
因为ActivityGroup和他的子activity对返回方法的优先级是一样的,而且该方法只有当前聚焦的View才能响应,所以我们可以禁用子Activity的OnKeyDown并且让他获得焦点将时间传递给ActivityGroup处理。