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

时间:2011-04-15 10:06:52

标签: android android-activity tabactivity

我在android项目中有TabActivity,其中包含一些标签。在每个选项卡中,我可以打开各种活动,在选项卡中打开后我想回到相同选项卡中的上一个活动,但默认的android行为关闭我的根选项卡活动。我怎么能实现我需要的行为?

1 个答案:

答案 0 :(得分:0)

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

http://ericharlow.blogspot.com/2010/09/experience-multiple-android-activities.html

更简单的方法是将标签的子视图数组保留在初始的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()类保存原始活动视图的所有膨胀。这样,如果数组中没有更多视图,则可以调用此方法重新生成原始活动。