2011-04-28 93 views
1

我试图在选择相关选项卡时通知我的活动。 考虑follwoing情况:Tabwidget中的活动生命周期

MainActivity:

// Create an Intent to launch an Activity for the tab (to be reused) 
intent = new Intent().setClass(this, HomeActivity.class); 

// Initialize a TabSpec for each tab and add it to the TabHost 
spec = tabHost.newTabSpec("home").setIndicator("Home", 
        res.getDrawable(R.drawable.ic_tab_home)) 
       .setContent(intent); 

tabHost.addTab(spec); 

// Do the same for the other tabs 
intent = new Intent().setClass(this, ProceduresActivity.class); 
spec = tabHost.newTabSpec("procedures").setIndicator("Procedures", 
        res.getDrawable(R.drawable.ic_tab_checklist)) 
       .setContent(intent); 
tabHost.addTab(spec); 

现在,选择我的第二个选项卡中的第一次,ProceduresActivity的onCreate方法被调用。 我想要做的是,在ProceduresActivity内,只要选择了选项卡1和选项卡2(我的),就会得到通知。 我tryed覆盖的onPause和的onResume ProceduresActivity但是内那些当MainActivity是pasued只被调用/恢复,而不是当我切换标签... 因此,换句话说,我想ProceduresActivity做一些事情,每当用户选择第二个选项卡,而不仅仅是第一次。 有人可以帮我吗? 谢谢,卢卡。

回答

1

嗯。这似乎可能有点困难(我甚至不确定这是可能的)。有两种方法可以看出您可以达到相同的结果。

第一种方法是让用户返回时第一个选项卡刷新它的数据/信息。这可以通过在onResume()中添加一个标志来完成。很简单。

如果您需要活动来完成需要一些时间的活动,您可以创建一个活动组。它基本上是多个活动的控制器。它同时启动它们,只是选择一次显示哪一个。这意味着(就你而言)这两项活动都将运行,但只会显示一项活动。当用户使用第二个选项卡时,如果您希望第一个选项卡执行某些操作,您可以转到ActivityGroup(它就像是一个控制器),然后让它根据第一个选项卡执行任何操作。

我在ActivityGroup路径中看到的唯一问题是将其绑定到您的选项卡,但有很多解决方法。

+1

嗯,你的第一个解决方案实际上是工作...我不知道我在做之前,但它并没有调用的onResume每次用户又回到该选项卡... BTW,谢谢! – lviggiani 2011-04-28 14:33:51

+0

没问题。我很乐意提供帮助 – NotACleverMan 2011-04-28 14:36:35

0

也许这可以帮助你,我用它来执行一个动作,当选项卡更改。但是,也许你可以改变它来做每个标签的具体行动?

getTabHost().setOnTabChangedListener(new OnTabChangeListener() { 
      public void onTabChanged(String tabId) { 
       //TODO, action to be performed 
      } 
     } 
});