【问题标题】:popbackstack() not workingpopbackstack()不工作
【发布时间】:2018-06-12 12:13:48
【问题描述】:

为了让我的选项卡保留之前输入的信息(如在 EditText 中),我将片段存储在 backstack 中,并在用户切换选项卡并返回前一个选项卡时尝试将其从 backstack 中弹出。

但“popBackStack()”方法似乎不起作用。这是我的代码 sn-p:

fragment = null;

        fragment = Tab1.newInstance(1,categoryName.get(0));

        fm = getSupportFragmentManager();
        ft = fm.beginTransaction();
        ft.replace(R.id.simpleFrameLayout, fragment);
        ft.addToBackStack("tab1");
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.commit();
        tabListBuffer.add(tabLayout.getTabAt(0)); //Add the first tab to arrayList


// perform setOnTabSelectedListener event on TabLayout
        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {

            @Override
            public void onTabSelected(TabLayout.Tab tab) {

                tabListBuffer.add(tab);
                int count=0;
                int temp=0;

                for (int i = 0; i < tabListBuffer.size(); i++) {
                    if (tabListBuffer.get(i) == tab) {
                        temp=i+1;


                        count++;


                    }
                    final int str = temp;
                    if (count>=2)
                    tabRepeatPos=str;
                }


// get the current selected tab's position and replace the fragment accordingly
                fragment = Tab1.newInstance(tab.getPosition(), categoryName.get(tab.getPosition()));
                String backStateName = fragment.getClass().getName();
                fm = getSupportFragmentManager();
                boolean fragmentPopped = fm.popBackStackImmediate();

                ft = fm.beginTransaction();

                ft.replace(R.id.simpleFrameLayout, fragment);

                ft.addToBackStack("tab" + tab.getPosition());

                if (fragmentPopped) {
                    fm.popBackStack("tab"+tabRepeatPos, 0);
                    fm.executePendingTransactions();
                }

                ft.commit();
                }

我的代码有什么问题?我是否将“popBackStack()”方法放在了错误的位置?

请帮忙!

【问题讨论】:

    标签: android fragment-backstack


    【解决方案1】:

    在堆栈中添加和删除片段时,请尝试使用 TAG 的其他方法。 然后按标签弹出。它应该工作

    【讨论】:

    • 我应该如何使用 TAGS?
    • 我认为我的片段在创建新实例时被破坏了。所以从 backstack 中弹出会重新创建之前的片段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2013-07-21
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    相关资源
    最近更新 更多