2012-02-01 19 views
0

単一のビュー内に複数のタブホストを作成しようとしています。この例では、ioschedアプリケーションのコードサンプルと 'workspace'ビューを使用しています。このビューでは、左右にスワイプしてビュー間をスライドできます。複数のtabhost要素を1つのビューで作成する

各スライディングビューにはタブホストが含まれます。

私が抱えている問題は、2番目、3番目などのタブホストを作成すると、すべてのコンテンツが最初のタブホストに表示され、適切なものではないということです。

私はオブジェクトのリストを持って、リスト内の各オブジェクトは、個別のtabhostがあります

Outer loop over each xxx to build a tabhost for each xxx 

    // Setup views 
    ctlr.mRootView = (ViewGroup) inflater.inflate(R.layout.controllers_list_content_tabbed, null); 

    ctlr.scrollView = (ObservableScrollView) ctlr.mRootView.findViewById(R.id.controllers_scroll); 
    ctlr.scrollView.setOnScrollListener(this); 

    ctlr.mTabHost = (TabHost) ctlr.mRootView.findViewById(android.R.id.tabhost); 
    ctlr.mTabWidget = (TabWidget) ctlr.mRootView.findViewById(android.R.id.tabs); 
    ctlr.mTabHost.setup(); 
    ctlr.mTabRealContentView = ctlr.mRootView.findViewById(R.id.realtabcontent); 
    int mTabReakContentViewId = ctlr.mTabRealContentView.getId(); 
    ctlr.mTabManager = new TabManager(this, ctlr.mTabHost, mTabReakContentViewId); 
    . 
    . 
    . I loop several tabs like the snippet below and I expect each of these tabs on each tabhost 
    . 
    // Supply controller uri as an argument. 
    Bundle args = new Bundle(); 
    args.putInt("controllerId", ctlr.mControllerId); 

    String tagSpec = TAG_PROBES + "_" + ctlr.mControllerId.toString(); 
    ctlr.mTabManager.addTab(ctlr.mTabHost.newTabSpec(tagSpec) 
              .setIndicator(buildIndicator(ctlr, R.string.db_maint_probes)), 
          DbMaintProbesFragment.class, 
          args); 

    . 
    . 
    . 
    mWorkspace.addView(ctlr.mRootView); 
    mCtlrs.add(ctlr); <<-- this is the linked list of all the items added to the workspace 

私は問題は毎回がTabManagerがその最後にnew'edされているという事実に何らかの形で関係していると思います同じRealTabContentリファレンスを常に使用しています。

これは私を夢中にさせている。

それぞれのタブホストがそれぞれの断片に組み込まれている間、私はすべてが最初のRealTabContent IDを参照していることがわかります。

ご協力いただきありがとうございます。

答えて

0

TabManagerとは何ですか?私はAndroid開発のドキュメントでそれを見つけることができません。

私が見るところでは、1つのTabHostと1つのTabManagerを作成してタブを追加するだけです。確かに複数のものが必要ですか?

私はViewFlipperを使用して、多数の線形レイアウトを追加します。次に、各直線レイアウトにタブホストを追加します。これにより左右にスワイプするときに見えるように接続できる複数の「スクリーン」が作成され、それぞれの「スクリーン」には独自のタブセットが格納されます。

+0

残念ですが、TabManagerはGoogleサンプルコードhttp://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabs.htmlに記載されているヘルパークラスです。フラグメントの管理に役立ちますタブで – HeneryH

+0

上記のコードスニペットは、作成したいタブホストごとに1回ループで実行されます。 – HeneryH

関連する問題