[英]Android Actionbar tabs with fragments
在我的应用程序中,我有一个活动来实例化具有三个Fragment类的ActionBar
。
// create action bar
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);
// set tabs
Tab tab = null;
tab = actionBar.newTab()
.setIcon(R.drawable.tabbar_app_selected)
.setTag(Globals.MainActivityTab.NewApp)
.setTabListener(new MainActivityTabListener<BasicFormFragment>(this, "new_app_frag", BasicFormFragment.class, this));
actionBar.addTab(tab);
tab = actionBar.newTab()
.setIcon(R.drawable.tabbar_saved)
.setTag(Globals.MainActivityTab.Saved)
.setTabListener(new MainActivityTabListener<SavedAppFragment>(this, "saved_apps_frag", SavedAppFragment.class, this));
actionBar.addTab(tab);
tab = actionBar.newTab()
.setIcon(R.drawable.tabbar_settings)
.setTag(Globals.MainActivityTab.Settings)
.setTabListener(new MainActivityTabListener<SettingsFragment>(this, "settings_frag", SettingsFragment.class, this));
actionBar.addTab(tab);
在我的应用程序运行期间,有时需要显示特定选项卡的新片段。 为此,我通过FragmentManager
如下添加一个新片段。 这是为了模拟在任何移动应用程序中都能找到的一种向下钻取的界面类型。
// show report screen
AppReportOptionsFragment reportOptionsFragment = new AppReportOptionsFragment();
reportOptionsFragment.SetAppraisal(_app);
reportOptionsFragment.SetIsNew(_isNew);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.SavedAppFrame, reportOptionsFragment);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.addToBackStack("AppReportOptionsFragment");
fragmentTransaction.commit();
这段代码很好用,我看到我的片段代替了前面的片段。 我还保留了更改选项卡的功能,而选项卡更改就是问题所在。
基本上,我遇到的问题是当我实例化如上的新片段,然后更改为其他选项卡,然后将先前的选项卡重置为原始片段。 从而清除用户可能在上一个选项卡上所做的任何工作。
我的问题是如何强制应用程序保留上一个选项卡的子片段,以便当我再次点击该选项卡时,用户在离开该选项卡时将看到该选项卡。 基本上,我希望它能够与iOS中的UITabbarController
完全UITabbarController
。
关于我在这里做错什么的任何建议,还有没有更好的方法用Fragments和Actionbar选项卡实现向下钻取接口?
谢谢!
此答案不能解决您的问题。 这只是有关新API的警告。 如果您使用的是api 21(如果支持旧设备,这并不重要),则应考虑更改模式,因为NAVIGATION_MODE_TABS
现在已弃用。
您可以在GoogleIO应用中使用类似SlidingTabLayout
的模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.