2010-03-03 87 views
5

安卓第一个选项卡intent oncreate始终调用以下是带有意向数据的选项卡示例。无论我们将tab2设置为默认选项卡

在调试,我发现总是先当标签,我们在我们的情况下标签在标签主机添加

tabHost.addTab(tabHost.newTabSpec("tab1") 
        .setIndicator("list") 
        .setContent(new Intent(this, List1.class))); 

的“列表1”的意图onCreate方法被调用,无论是我们当前标签页或不即使如果我将tab2定义为当前选项卡如何解决此问题?

public class Tabs3 extends TabActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final TabHost tabHost = getTabHost(); 

     tabHost.addTab(tabHost.newTabSpec("tab1") 
       .setIndicator("list") 
       .setContent(new Intent(this, List1.class))); 

     tabHost.addTab(tabHost.newTabSpec("tab2") 
       .setIndicator("photo list") 
       .setContent(new Intent(this, List8.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))); 

     // This tab sets the intent flag so that it is recreated each time 
     // the tab is clicked. 
     tabHost.addTab(tabHost.newTabSpec("tab3") 
       .setIndicator("destroy") 
       .setContent(new Intent(this, Controls2.class) 
         .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))); 
    } 
} 
+0

所以,你要添加的所有标签,但比第一片其他的东西可以在默认情况下选中,你不想在List1活动,直到你可以创建点击标签? – synic 2010-03-03 19:42:45

+0

是的你是对的。 – 2010-03-04 05:10:35

回答

1

setDefaultTab(1);

当单独的活动用作Tab内容时,TabActivity似乎不起作用。以下代替这种方法

使用,

tabHost.setCurrentTab(1);

这将设置“照片列表”(即第二个选项卡)作为选择或默认选项卡...

+2

我有同样的问题,并没有这不起作用。它确实设置了选定的选项卡,但无论如何,第一个选项卡的onCreate都会被调用。 – typeoneerror 2011-02-13 01:50:03

+0

同样的错误在这里,当前标签的作品,但第一个标签oncreate仍然被称为。 – rnaud 2011-02-14 13:25:19

0

我发现这个相同的行为为好,我没有具体的修复。但我知道一个解决方法。

不是将活动附加到每个选项卡,而是将视图附加到每个选项卡。然后,您可以非常轻松地处理数据传递,因为每个视图都在同一个活动中。这也消除了使用Intents来传递信息的需要。此外,您可以根据需要创建(或扩充)视图,并拥有更多控制权。

祝你好运, 斯科特