不运行oncreate(),第二次在同一页面中更改选项卡

时间:2011-06-24 11:37:56

标签: android

我在页面视图中有4个选项卡,当我第一次单击选项卡时,它会执行相应选项卡的oncreate()方法,当我转到同一页面上的其他选项卡并再次单击之前单击的选项卡然后其{ {1}}方法没有执行为什么?为什么它不起作用按钮点击意味着每次我点击它的oncreate()方法运行。

标签活动类的代码位于

之下
oncreate()

亲爱的,如果我使用

  intent1 = new Intent().setClass(this, keywordxmlparsing.class);
spec1 = tabHost.newTabSpec("Activity2").setIndicator("keyword/ search...").setContent(intent1);
tabHost.addTab(spec1); 

intent2 = new Intent().setClass(this, filter.class);
spec2 = tabHost.newTabSpec("Activity1").setIndicator("filter search").setContent(intent2);
tabHost.addTab(spec2);
intent3 = new Intent().setClass(this, OpeningToday.class);
spec3 = tabHost.newTabSpec("Activity3").setIndicator("opening today").setContent(intent3);
tabHost.addTab(spec3);
intent4 = new Intent(keywordresulttab.this,Map.class);
spec4 = tabHost.newTabSpec("Activity4").setIndicator("Map").setContent(intent4);
tabHost.addTab(spec4);

然后我可以使用

转到其他 @Override public void onTabChanged(String label) { // TODO Auto-generated method stub if(label == "Activity2") { } try{ if(label == "Activity4") { Intent intent4; intent4 = new Intent(keywordresulttab.this,Map.class); startActivity(intent4); Log.i("suiuawhd","maps class"); } 表示
activity

我们可以再次加载 intent4 = new Intent(keywordresulttab.this,Map.class); startActivity(intent4); 选项卡点击?然后写什么来代替

activity

2 个答案:

答案 0 :(得分:3)

包含活动的标签通过ActivityGroup实现。当有人更改标签时,如有必要,会创建相应的活动 。当您第二次移动到任何选项卡时,活动已经存在,只显示其窗口。 您应该使用:

TabHost.setOnTabChangedListener(TabHost.OnTabChangeListener l)

将单独活动作为内容的TabActivity有点棘手,因此您可能应该考虑使用Views。如果没有,您可以使用以下代码来访问彼此的所有活动:

从TabActivity获取内容活动的实例:

TabActivity.getLocalActivityManager().getActivity(String name)

其中name在newTabSpec()方法中给出。

从内容活动中获取TabActivity的实例:

FirstTab.getParent()

使用这些方法,您可以在所有活动之间创建通信(使用正确的转换)。例如:

public void onTabChanged(String label) {

  if(label.equals("Activity2")) {
      SecondActivity sa = (SecondActivity) getLocalActivityManager().getActivity(label);
      sa.modifySomething();
  }
}

如果您想更改标签下的活动,请使用:

tabHost.clearAllTabs ()

再次创建所有TabSpec。

答案 1 :(得分:0)

在android oncreate()生命周期中,在活动的生命周期中调用一次(如构造函数),当你再次按下活动时,活动处于活动状态并且在内存中,因此它不会再次调用onCreate。

所以你必须实施

TabHost.setOnTabChangedListener(TabHost.OnTabChangeListener l).