具有多个子活动的Android TabActivity后退按钮功能

具有多个子活动的Android TabActivity后退按钮功能,android,android-activity,tabactivity,Android,Android Activity,Tabactivity,我在android项目中有TabActivity,其中包含一些选项卡。在每个选项卡中,我可以打开各种活动,在一个选项卡中打开后,我希望返回到同一选项卡中的上一个活动,但默认android行为关闭我的根选项卡活动。我如何才能实现我需要的行为?有几种方法可以做到这一点。第一个涉及到创建一个自定义GroupActivity,它将从LocalActivityManager跟踪堆栈,然后为每个选项卡扩展该类。为此,请查看本教程: 一种更简单的方法是在初始ActivityGroup类中保留选项卡的子视图数

我在android项目中有TabActivity,其中包含一些选项卡。在每个选项卡中,我可以打开各种活动,在一个选项卡中打开后,我希望返回到同一选项卡中的上一个活动,但默认android行为关闭我的根选项卡活动。我如何才能实现我需要的行为?

有几种方法可以做到这一点。第一个涉及到创建一个自定义GroupActivity,它将从LocalActivityManager跟踪堆栈,然后为每个选项卡扩展该类。为此,请查看本教程:

一种更简单的方法是在初始ActivityGroup类中保留选项卡的子视图数组,然后覆盖“后退”按钮。下面是一些示例代码:

public void replaceContentView(String id, Intent newIntent) {
    View view = getLocalActivityManager()
                    .startActivity(id, newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) 
                    .getDecorView();
    viewList.add(view); // Add id to keep track of stack.
    this.setContentView(view);
}       


public void previousView() {

    if(viewList.size() > 0) {  
        viewList.remove(viewList.size()-1);
        if (viewList.size() > 0)
            setContentView(viewList.get(viewList.size()-1)); 
        else
          initView();
    }else {  
        finish();  
    }  
}

initView()类保存原始活动视图的所有扩展。通过这种方式,如果数组中没有更多视图,您可以调用此方法来重新生成原始活动。

@重写公共布尔onKeyDown(int-keyCode,KeyEvent-event){if(keyCode==KeyEvent.keyCode\u BACK){//防止默认实现上一个刚刚完成当前活动返回true;}返回super.onKeyDown(键码,事件);}