FragmentTabHost-选项卡在第一次查看之前无法寻址

道沃多

我使用的是多选项卡的FragmentTabHost(构造如图所示这里)。但是,除非通过至少一次单击该选项卡激活了所寻址的选项卡,否则我无法使用getFragmentByTag(在这种情况下返回null)随机寻址选项卡。

FragmentTabHost似乎延迟了选项卡的创建,直到我们真正需要它们为止(aka用户单击它并想查看它)。
有什么方法可以强制主机立即创建它们,以便我可以通过getFragmentByTag安全地访问它们?
还是可以“自行创建”选项卡,然后将其添加到TabHost中?

mmlooloo

有什么方法可以强制主机立即创建它们,以便我可以通过getFragmentByTag安全地访问它们?

否,因为交易是在处执行的onAttachedToWindow()让我们看一下源代码

@Override
protected void onAttachedToWindow() {
    super.onAttachedToWindow();
    String currentTab = getCurrentTabTag();
    // Go through all tabs and make sure their fragments match.
    // the correct state.
    FragmentTransaction ft = null;
    for (int i=0; i<mTabs.size(); i++) {
        TabInfo tab = mTabs.get(i);
        tab.fragment = mFragmentManager.findFragmentByTag(tab.tag);
        if (tab.fragment != null && !tab.fragment.isDetached()) {
            if (tab.tag.equals(currentTab)) {
                // The fragment for this tab is already there and
                // active, and it is what we really want to have
                // as the current tab.  Nothing to do.
                mLastTab = tab;
            } else {
                // This fragment was restored in the active state,
                // but is not the current tab.  Deactivate it.
                if (ft == null) {
                    ft = mFragmentManager.beginTransaction();
                }
                ft.detach(tab.fragment);
            }

        }
    }
    // We are now ready to go.  Make sure we are switched to the
    // correct tab.
    mAttached = true;
    ft = doTabChanged(currentTab, ft);
    if (ft != null) {
        ft.commit();
        mFragmentManager.executePendingTransactions();
    }
}
@Override
protected void  onDetachedFromWindow() {
    super.onDetachedFromWindow();
    mAttached = false;
}

如您所见,在mFragmentManager.executePendingTransactions();处执行onAttachedToWindow

还是可以“自行创建”选项卡,然后将其添加到TabHost中?

是的,您可以使用tabhost,也可以使用以下方法创建标签内容。

公共TabHost.TabSpec setContent(int viewId)

公共TabHost.TabSpec setContent(目的意图)

公共TabHost.TabSpec setContent(TabHost.TabContentFactory contentFactory)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

FragmentTabHost-选项卡直到第一次查看后才可寻址

来自分类Dev

无法从TabActivity转换为FragmentTabHost

来自分类Dev

FragmentTabHost在选项卡中显示内容

来自分类Dev

FragmentTabHost选项卡的内容未出现

来自分类Dev

无法更改FragmentTabHost选项卡的指示器颜色

来自分类Dev

FragmentTabHost TabWidget tabStrip无法自定义

来自分类Dev

FragmentTabHost中的setup()无法应用于

来自分类Dev

使用FragmentTabHost在选项卡中显示Google地图

来自分类Dev

如何将FragmentTabHost选项卡放在屏幕底部?

来自分类Dev

使 FragmentTabHost 的所有选项卡适合屏幕

来自分类Dev

模态选项卡在第一次触发时无法正确加载

来自分类Dev

无法通过FragmentTabHost从一个片段到达edittext

来自分类Dev

无法通过FragmentTabHost从一个片段到达edittext

来自分类Dev

从外部片段中的FragmentTabHost的子片段添加新的选项菜单

来自分类Dev

ViewPager和FragmentTabHost两次显示内容

来自分类Dev

在FragmentTabhost中,片段无法达到由beginTransaction()调用的目的。

来自分类Dev

FragmentTabHost:指定的子代已经有一个父代

来自分类Dev

Android FragmentTabHost

来自分类Dev

当在其容器中替换FragmentTabHost时,选项卡小部件仍保留

来自分类Dev

嵌套保留的FragmentTabHost不会将选项卡附加到新的Activity

来自分类Dev

Android:FragmentTabHost-java.lang.IllegalArgumentException:您必须指定一种创建标签内容的方法

来自分类Dev

与FragmentTabHost中的片段通信

来自分类Dev

Communicate with a fragment in a FragmentTabHost

来自分类Dev

FragmentTabHost和异步任务

来自分类Dev

在FragmentTabHost中使用滑动

来自分类Dev

Android-无法将android.widget.TabHost强制转换为android.support.v4.app.FragmentTabHost

来自分类Dev

使用 TabPanel 时仅呈现活动选项卡并且仅在第一次

来自分类Dev

Xamarin Android-在片段中使用FragmentTabHost

来自分类Dev

FragmentTabHost在popBackStack之后获取空片段

Related 相关文章

  1. 1

    FragmentTabHost-选项卡直到第一次查看后才可寻址

  2. 2

    无法从TabActivity转换为FragmentTabHost

  3. 3

    FragmentTabHost在选项卡中显示内容

  4. 4

    FragmentTabHost选项卡的内容未出现

  5. 5

    无法更改FragmentTabHost选项卡的指示器颜色

  6. 6

    FragmentTabHost TabWidget tabStrip无法自定义

  7. 7

    FragmentTabHost中的setup()无法应用于

  8. 8

    使用FragmentTabHost在选项卡中显示Google地图

  9. 9

    如何将FragmentTabHost选项卡放在屏幕底部?

  10. 10

    使 FragmentTabHost 的所有选项卡适合屏幕

  11. 11

    模态选项卡在第一次触发时无法正确加载

  12. 12

    无法通过FragmentTabHost从一个片段到达edittext

  13. 13

    无法通过FragmentTabHost从一个片段到达edittext

  14. 14

    从外部片段中的FragmentTabHost的子片段添加新的选项菜单

  15. 15

    ViewPager和FragmentTabHost两次显示内容

  16. 16

    在FragmentTabhost中,片段无法达到由beginTransaction()调用的目的。

  17. 17

    FragmentTabHost:指定的子代已经有一个父代

  18. 18

    Android FragmentTabHost

  19. 19

    当在其容器中替换FragmentTabHost时,选项卡小部件仍保留

  20. 20

    嵌套保留的FragmentTabHost不会将选项卡附加到新的Activity

  21. 21

    Android:FragmentTabHost-java.lang.IllegalArgumentException:您必须指定一种创建标签内容的方法

  22. 22

    与FragmentTabHost中的片段通信

  23. 23

    Communicate with a fragment in a FragmentTabHost

  24. 24

    FragmentTabHost和异步任务

  25. 25

    在FragmentTabHost中使用滑动

  26. 26

    Android-无法将android.widget.TabHost强制转换为android.support.v4.app.FragmentTabHost

  27. 27

    使用 TabPanel 时仅呈现活动选项卡并且仅在第一次

  28. 28

    Xamarin Android-在片段中使用FragmentTabHost

  29. 29

    FragmentTabHost在popBackStack之后获取空片段

热门标签

归档