0

让我先定义我的问题:

我有一个带有 ActionBar 的 ViewPager,视图寻呼机的每个页面都是一个片段,每个页面本身都有自己的按钮来用另一个片段替换当前片段。例如:

我们首先启动应用程序并滑动到第三个选项卡,这里我们使用 viewPager onTabchanged 方法设置标题,没有问题,在这个页面中我们有按钮,单击它们将用新值替换页面本身(将第三页视为主页面显示项目列表和按钮的类别,例如将我们移动到再次作为项目列表的子类别)所以如果我们按两次按钮+我们来到第三页,每次我们替换片段现在我们在 backStack 中有 3 个片段!我想要的是 onBackButton Pressed actionBar 应该设置正确的标题,这是我尝试过的:

        @Override
    public void onBackPressed() {


    int mFragmentCount = this.getSupportFragmentManager().getBackStackEntryCount();


            super.onBackPressed();
                if(mFragmentCount != 0)
                {

                    FragmentManager.BackStackEntry backEntry=getSupportFragmentManager().getBackStackEntryAt(mFragmentCount-1);
                    String str=backEntry.getName(); //the tag of the fragment
                    mActionBar.setTitle(str);
                }
        }

但每次我得到 ArrayOutOfIndex 错误,例如无效索引 2 是 2 !

任何人都可以帮助我吗?

谢谢你!

4

2 回答 2

1

问题是,当您获得 mFragmentCount 的值时,您在 backstack 中有 x 个片段,但在 super.onBackPressed() 之后,您有 x-1 个片段,因此数组中位置 x-1 中的片段不存在。

于 2015-01-14T14:56:08.183 回答
0

你可以试试这个:

@Override
public void onBackPressed() {
    int count = getFragmentManager().getBackStackEntryCount();
    if (count < 2) {
        super.onBackPressed();
    } else {
        FragmentManager.BackStackEntry backStackEntry = getFragmentManager().getBackStackEntryAt(count - 2);
        mActionBar(backStackEntry.getName());
        getFragmentManager().popBackStack();
    }
}
于 2015-03-13T13:10:00.723 回答