[英]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.