我有以下代码来设置我的片段标签。
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(
mTabHost.newTabSpec("tab1").setIndicator("Latest"), MainFragment.class,
getBundle(0));
mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Today"), MainFragment.class,
getBundle(1));
mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Week"), MainFragment.class,
getBundle(2));
mTabHost.addTab(mTabHost.newTabSpec("tab4").setIndicator("Month"), MainFragment.class,
getBundle(3));
mTabHost.addTab(mTabHost.newTabSpec("tab5").setIndicator("Year"), MainFragment.class,
getBundle(4));
单击按钮时,我需要以编程方式加载选项卡。我可以setCurrentTab(1); setCurrentTab(0);强制重新加载,但这不是一个很好的方法。
我可以在我的片段中有一个重载方法来加载片段。但我不知道如何引用它们,因为我只将类名传递给标签主机
答案 0 :(得分:0)
setCurrentTab()并不是那么糟糕,这是在标签之间进行更改的好方法。 更改选项卡时,将触发侦听器OnTabChangeListener,就像用户单击其他选项卡一样。
如果在单击此按钮时需要执行检查或某个中间任务,则可以执行中间方法,但更改选项卡的最终方法是setCurrentTab()。
在我的项目中,onTabChangeListener做了所有智能部分,所以我不必担心片段堆栈。 如果在您的情况下您需要获得正确的堆栈(返回到另一个片段),您可以在FragmentTransaction上使用“replace”来维护正确的堆栈。