2012-02-01 3 views
0

단일보기 내에서 여러 탭 호스트를 만들려고합니다. 이 예제에서는 iosched 응용 프로그램의 코드 샘플과 사용자가보기간에 슬라이드하기 위해 왼쪽/오른쪽으로 스 와이프 할 수있는 '작업 공간'보기를 사용하고 있습니다.하나의보기에서 여러 tabhost 요소 만들기

각 슬라이딩 뷰에는 탭 호스트가 포함됩니다.

내가 겪고있는 문제는 두 번째, 세 번째 탭 호스트를 채울 때 모든 콘텐츠가 첫 번째 탭 호스트에 표시되는 것이지 적절한 첫 번째 탭 호스트에 나타나지 않는다는 것입니다.

내가 개체의 목록이 목록에있는 각 개체는 별도의 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 란 무엇입니까? 안드로이드 개발 문서에서 찾을 수 없습니다.

위에서 볼 수 있듯이 하나의 TabHost와 하나의 TabManager 만 만들고 탭을 추가하고 있습니다. 확실히 하나 이상을 원하십니까?

필자는 ViewFlipper를 사용하여 수많은 선형 레이아웃을 추가했습니다. 그런 다음 각 선형 레이아웃에 탭 호스트를 추가합니다. 이렇게하면 여러 개의 '화면'이 만들어져 왼쪽/오른쪽으로 스 와이프 할 때 볼 수 있도록 연결할 수 있습니다. 각 '화면'에는 자체 탭 세트가 있습니다.

+0

죄송합니다, TabManager는 Google 샘플 코드 http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabs.html에서 문서화 된 도우미 클래스입니다. 조각 관리에 도움이됩니다. 탭에. – HeneryH

+0

위의 코드 스 니펫은 생성하려는 각 탭 호스트에 대해 루프에서 한 번 실행됩니다. – HeneryH

관련 문제