Android:如何强制createTabContent在所有标签中创建内容?

时间:2013-11-02 14:57:00

标签: android dynamic tabs android-tabhost

我最近一直在玩标签,这是一个问题。以下循环创建具有动态布局的动态选项卡。但是,当我运行应用程序时,只创建了第一个选项卡内容,并且只有当我尝试选择第二个选项卡时,才会创建第二个选项卡内容。

我想立即访问第二个标签布局,如果我尝试从第一个标签页执行此操作,则在选择第二个标签页之前应用程序崩溃。

    Tabs = (TabHost) findViewById(android.R.id.tabhost);
    Tabs.setup();       
        for (count =0;count < all_rooms_count;count++){
        NewTab.setContent(new TabHost.TabContentFactory()
            {

                public View createTabContent(String tag)
                {
                  RelativeLayout ll = new RelativeLayout(MainActivity.this);
                    ll.setLayoutParams(params);
                    ll.setId(passedTabId);

                    return ll;
                }
            });

            Tabs.addTab(NewTab);
        }

是否可以强制循环为所有选项卡创建选项卡内容 ?

1 个答案:

答案 0 :(得分:0)

首先,它为每个选项卡创建一个单独的TabContentFactory。最好保留一个TabContentFactory实例并将其用于所有Tabs。

无需仅在createTabContent方法内创建选项卡内容。您可以一次创建所有视图(甚至是外部),并在选择相应的选项卡时返回。

RelativeLayout l1=..;
RelativeLayout l2=..;
RelativeLayout l3=..;
RelativeLayout l4=..;

TabContentFactory factory=new TabContentFactory(){

public View createTabContent(String tagId){

if(tagId.equals(TAG1))
    return l1;
}else if(tagId.equals(TAG2)){
    return l2;
}else if(tagId.equals(TAG3)){
    return l3;
}
};