0

大家好,快速提问..

现在我有一个带有 4 个选项卡的 fragmenttabhost,默认情况下,应用程序启动时会加载选项卡 0,这是有道理的。但是,在触摸特定选项卡之前,我不想加载任何选项卡。仅仅是因为 tab0 做了相当多的工作,除非被触及,否则不需要完成。

我虽然关于将 true/false 传递给 bundle 以显示它或不显示它:

mTabHost.addTab(createTab("tab1", "test1", R.drawable.ico1), TabClass1.class, false); mTabHost.addTab(createTab("tab2", "test2", R.drawable.ico2), TabClass2.class, false); mTabHost.addTab(createTab("tab3", "test3", R.drawable.ico3), TabClass3.class, false); mTabHost.addTab(createTab("tab4", "test4", R.drawable.ico4), TabClass4.class, false);

所以在 oncreateview 中看起来像这样:

public View  onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle extras = getArguments();  
    //pseudo
    if(true )return inflater.inflate(R.layout.tab_messages, container, false);
    else return null;
}

但似乎应该有一种更简单的方式来说“好的,我的标签在触摸之前不会加载它们”

我尝试将 curretTab 设置为 -1 但这没有做任何事情。

任何帮助都会很棒!

4

1 回答 1

0

做你的工作

setUserVisibleHint()

如果在 onCreateView 之前调用它可能会出现一些问题,或者您可能希望在调用 onResume 之前不获取这些事件。使用此 Fragment 扩展您的选项卡。如果系统调用了 setUserVisibleHint,它将不早于 onResume 调用 onVisible 并提供后续更新。

UserVisibleHintFragment

做你的事情

onVisible()

虽然我不确定 TabHost 会调用 setUserVisibleHint (至少 ViewPager 会调用)

于 2014-02-13T20:07:35.390 回答