popBackStack解雇onCreate

时间:2016-04-04 12:34:14

标签: android android-fragments back-button

我正在尝试将我的IOS应用程序转换为android,我在android中有点新。我的应用程序通常使用导航抽屉在片段之间导航。当我在片段A,然后转到片段B,然后按下后退按钮,它下面的代码返回到片段A.但是,当我使用后退按钮转到片段A时,它再次从开始。有没有一种方法可以回到之前的片段而不再加载类,片段中的先前信息将被显示?如果有人能帮忙解决这个问题会很棒吗?

这是按下后退按钮时的代码:

 @Override
    public void onBackPressed() {

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

        if (drawer.isDrawerOpen(GravityCompat.START)) {

            drawer.closeDrawer(GravityCompat.START);

        } else {

            android.support.v4.app.FragmentManager fm = getSupportFragmentManager();

            if (fm.getBackStackEntryCount()>0) {

                fm.popBackStack();

            }
            else {
                System.out.println("no more back");
            }

        }
    }

这是我在片段之间导航的方式:

usersFragment fragment = new usersFragment();
            android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.fragment_container, fragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();

1 个答案:

答案 0 :(得分:2)

编辑:

使用

fragmentTransaction.hide(getFragmentManager().findFragmentByTag("yourTag"));
fragmentTransaction.add(R.id.fragment_container, fragment);

而不是

fragmentTransaction.replace(R.id.fragment_container, fragment);

因为替换删除当前片段并添加下一个片段。所以当回来时它再次重新创建前一个片段。