ActionBar选项卡不会在Fragment事务上消失

时间:2015-07-25 21:45:47

标签: android

我有一个链接三个片段的导航抽屉。所有片段都有一个具有不同标题的ActionBar。片段A和B没有标签,而片段C有标签1和标签2.浏览它们工作正常并显示不同的ActionBar标题,但是当我从C导航到其他片段时,标签仍然显示在片段A和B中动作条。当我从C导航到片段A和B时如何“隐藏”选项卡?

由于

切换片段

switch (possition) {
        case 0:
            fragment = new FragmentA();
            break;
        case 1:
            fragment = new FragmentB();
            break;
        case 2:
            fragment = new FragmentC();
            break;

             default: 
            break;
         }
         FragmentManager frgManager = getSupportFragmentManager();
         frgManager.beginTransaction().replace(R.id.content_frame, fragment)
            .commit();

片段C

 private String[] tabs = { "1", "2"};

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_utilities, container, false);
    viewPager = (ViewPager) rootView.findViewById(R.id.pager);
    actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar();
    mAdapter = new TabsPagerAdapter(getActivity().getSupportFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(UtilitiesFragment.this));
    }

2 个答案:

答案 0 :(得分:0)

尝试将导航模式设置为非选项卡式...

setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

...然后在相关时将其设置回选项卡模式。

另一种选择是只需通过removeTab上的ActionBar方法删除标签,然后在相关时再将其添加回来。

需要注意的一点是,该导航方法自API级别21起已被弃用,且为recommended that you use a different approach/pattern

答案 1 :(得分:0)

实际上我今天第二次提出建议:在片段中使用TabLayout而不是ActionBar标签。

https://developer.android.com/reference/android/support/design/widget/TabLayout.html