1

单击后退按钮时,屏幕显示上一个片段,但操作栏中的选定选项卡没有改变,所以我可能必须在 onBackStackChanged 中设置选定的片段对吗?

但是,它不起作用,当我切换到其他选项卡时,应用程序会冻结。似乎它被同时选择了多次,因为当我记录它时,backstack 被多次更改得非常快。

我已经知道为什么会结冰了。当我设置选定的导航项时,它会再次调用 onTabSelected() ,这又会调用 backStackChanged ,这又会重复。那么如何选择要下划线的选项卡,而无需重新选择选项卡?

@Override
        public void onTabSelected(Tab tab, FragmentTransaction ft){



        FragmentManager manage = getSupportFragmentManager();
        manage.addOnBackStackChangedListener(new OnBackStackChangedListener(){

            @Override
            public void onBackStackChanged() {
                if(actionBar.getSelectedTab().equals(tabRed))
                    actionBar.setSelectedNavigationItem(2);
                if(actionBar.getSelectedTab().equals(tabBlue))
                    actionBar.setSelectedNavigationItem(1);
                if(actionBar.getSelectedTab().equals(tabMatches))
                    actionBar.setSelectedNavigationItem(0);


            }
        });



        if(tab.equals(tabComp))
        {
ft.setCustomAnimations(R.anim.animation_fragment_out, R.anim.animation_fragment_switch);

            trans = getSupportFragmentManager().beginTransaction();
        trans.replace(android.R.id.content, teamsFrag);


        trans.addToBackStack(null);
        trans.commit();

        }
else if(tab.equals(tabRed))
        {


            ft.setCustomAnimations(R.anim.animation_fragment_out, R.anim.animation_fragment_switch);

            trans = getSupportFragmentManager().beginTransaction();
        trans.replace(android.R.id.content, redScorerFrag);



        trans.addToBackStack(null);
        trans.commit();
            curTab = tabRed;

        }
4

0 回答 0