如何顺利回到背压上的第一个片段

时间:2016-05-12 20:30:19

标签: android android-fragments navigation-drawer

我在我的应用程序中使用导航抽屉,抽屉中的每个项目都会启动一个片段。如果片段在视图中,并且按下后退按钮,我希望活动开始第一个片段。

详细说明,如果我正在查看 AbtFragment ContaFragment 并按下后退按钮,我希望活动开始或返回 HomeFragment < /强>

我的部分活动

public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        id = item.getItemId();

        Fragment fragment = null;

        if (id == R.id.menu_home) {
            fragment = new HomeFragment();
        }

        if (id == R.id.about_blog) {
            fragment = new AbtFragment();


        } else if (id == R.id.nav_contri) {
            fragment = new ContFragment();

        } else if (id == R.id.nav_contact) {
            fragment = new ContaFragment();

        } else if (id == R.id.nav_privy) {
            fragment = new PageFragment();

        } else if (id == R.id.nav_advert) {
            fragment = new PageFragment();

        }

        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right, android.R.anim.slide_in_left, android.R.anim.slide_out_right);
        ft.replace(R.id.content_frame, fragment, "visible_fragment");
        ft.addToBackStack(null);
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.commit();

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

    @Override
        public void onBackPressed() {
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                super.onBackPressed();
            }
            if (getSupportFragmentManager().getBackStackEntryCount() >= 1) {
                navigationView.setCheckedItem(R.id.menu_home);
                navigationView.getMenu().performIdentifierAction(R.id.menu_home, 0);
            }

        }

onBackPressed,我正在检查backstack中的片段数量,然后启动 HomeFragment ,如果它大于或等于1,但这不能正常工作。 例如,如果我开始 AbtFragment ,然后 ContFragment ,然后按后退按钮, AbtFragment 将首先在屏幕上闪烁 HomeFragment 将会显示。

请问,我该如何更正?

注意 HomeFragment 是默认设置,因此在启动活动时默认启动。

1 个答案:

答案 0 :(得分:0)

例如

# pacman -S lib32-libstdc++5