1

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

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

    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);
        }

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

4

1 回答 1

0

首先,为每个选项卡创建一个单独的 TabContentFactory 是多余的。保留一个 TabContentFactory 实例并将其用于所有选项卡是个好主意。

选项卡内容不必仅在 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;
}
};
于 2014-12-03T20:14:25.643 回答