包含片段的Android操作栏标签

时间:2015-03-03 16:49:17

标签: android android-fragments android-actionbar

在我的应用程序中,我有一个活动,它实例化一个带有三个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);

在我的应用程序运行期间,有时需要为特定选项卡显示新片段。 Todo我通过下面的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完全一致。

有关我在这里做错了什么的任何建议,是否有更好的方法来实现Fragments和Actionbar选项卡的向下钻取界面?

谢谢!

1 个答案:

答案 0 :(得分:1)

此答案无法解决您的问题。 这只是关于新API的警告。如果您使用的是api 21(如果您支持旧设备并不重要),则应考虑更改模式,因为NAVIGATION_MODE_TABS现已弃用。

您可以在GoogleIO应用中使用类似SlidingTabLayout的模式。

Use Tab with new ToolBar (AppCompat v7-21)