Создать несколько элементов tabhost в одном представлении - PullRequest
0 голосов
/ 02 февраля 2012

Я пытаюсь создать несколько табосов в одном представлении.В этом примере я использую образец кода из приложения iosched и представление «рабочее пространство», которое позволяет пользователям проводить пальцем влево / вправо для перемещения между представлениями.

Каждый из скользящих представлений будет содержать табулятор.

Проблема, с которой я сталкиваюсь, заключается в том, что при заполнении второго, третьего и т. Д. Табло все содержимое отображается на первом, а не на правильном.

У меня есть список объектов, каждыйОбъект в списке имеет отдельный 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 обновляется на последнем шаге, он всегда использует одну и ту же ссылку RealTabContent.

Есть мысли ??Это сводит меня с ума.

Пока каждый tabhost создается из своих соответствующих фрагментов, я вижу, что все они ссылаются на самый первый идентификатор RealTabContent.

Спасибо за любую помощь, которую вы можетепредложить!

1 Ответ

0 голосов
/ 02 февраля 2012

Что такое TabManager?Я не могу найти его в документации по разработке для Android.

Из того, что я вижу, вы только создаете один TabHost и один TabManager и добавляете к нему вкладки.Конечно, вы хотите более одного?

Я бы использовал ViewFlipper и добавил к нему многочисленные линейные макеты.Затем я бы добавил вкладки хостов для каждого из линейных макетов.Это создаст несколько «экранов», которые вы могли бы подключить для просмотра при перемещении влево / вправо, при этом каждый «экран» содержит собственный набор вкладок.

...