1

最近タブで遊んでいますが、ここに問題があります。次のサイクルでは、動的レイアウトで動的タブを作成します。ただし、アプリを実行すると、最初のタブのコンテンツのみが作成され、2 番目のタブを選択しようとすると、2 番目のタブのコンテンツが作成されます。

すぐに 2 番目のタブ レイアウトにアクセスしたいのですが、最初のタブからアクセスしようとすると、2 番目のタブを選択する前にアプリがクラッシュします。

    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 の 1 つのインスタンスを保持し、それをすべてのタブに使用することをお勧めします。

タブのコンテンツは 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 に答える