2011-02-11 31 views
2

我有一个带4个选项卡的TabHost。我只需要选定的选项卡活动在堆栈上可用。当用户更改选项卡时,如何完成前一选项卡下的活动。我试了下面的代码。这里显示第一个标签的代码。这对于其余的选项卡类似:Android TabHost堆栈上只有选定的选项卡

spec = tabHost.newTabSpec("tab1").setIndicator("Tab1", 
      res.getDrawable(R.drawable.ic_tab_tab1)) 
        .setContent(new Intent(this, Tab1.class) 
        .addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP)); 

但上面的代码删除TAB1活动堆栈/堆只有当用户再次来到该选项卡而不是当用户更改为新的选项卡。

回答

1

我看过这个,你有什么理由呢? 你怎么知道堆栈里有什么?你是否依赖于onDestroy()或什么?

我还没有一个完整的答案,但你可以看到哪些选项卡被激活:

让你的类实现OnTabChangeListener

public class YourClass extends TabActivity implements OnTabChangeListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
// Load all your normal objects as well as TabHost 

// make your tabhost listen for tab changes 
mTabHost.setOnTabChangedListener(this); 
} 

@Override 
public void onTabChanged(String tabId) { 

    int currentTabNumber = mTabHost.getCurrentTab(); 
    for(int i=0;i<mTabHost.getTabWidget().getChildCount();i++) 
    { 
     if(i != currentTabNumber){ 
      System.out.println("I'm not a currently active tab"); 
     }   
    } 

} 

} 
+0

我已经在我创造了4个选项卡主选项卡活动每一个都是一项活动。在每个活动中,我分别在onCreate和onStop中输入和退出日志。通过这个,我开始知道,当我将默认的当前标签设置为1时,第一个活动就进入了。同样,当用户将选项卡更改为2,3或4时,相应的活动即会开始,而不会在第一个活动中看到任何退出语句。当再次按第一个标签时,现在第一个活动正在完成并重新启动。 – Pavan 2011-02-12 05:02:45

相关问题