首页 > 解决方案 > 片段的Backstack概念

问题描述

我创建了一个带有导航抽屉的应用程序。我有3个片段。

在我的主要活动中,我调用了一个已经是导航项的片段。我从导航栏中单击了所有片段,当我按下后退按钮时,它会转到上一个片段并转到主页片段。

但是,每当我按下任何片段中的返回按钮时,我都想返回主片段。

让我知道是否需要添加更多详细信息。

    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

            switch (menuItem.getItemId()) {

                case R.id.nav_home:
                    fragment = new HomeFragment();
                    TAG_FRAGMENT="Home";                      
                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment,TAG_FRAGMENT).commit();
                    break;
                case R.id.nav_about:
                    fragment = new AboutUs();
                    TAG_FRAGMENT="About";
                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment,TAG_FRAGMENT).addToBackStack(null).commit();
                    break;
                case R.id.nav_feedback:
                    fragment = new Feedback();
                    TAG_FRAGMENT="Feedback";
                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment,TAG_FRAGMENT).addToBackStack(null).commit();
                    break;

            }
            drawerLayout.closeDrawer(GravityCompat.START);

            return true;
        }
    });
}


@Override
public void onBackPressed() {

    drawerLayout = findViewById(R.id.drawer_layout);
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
        drawerLayout.closeDrawer(GravityCompat.START);
    }
    else {

        if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
            getSupportFragmentManager().popBackStack();
        } else {
            super.onBackPressed();
        }
    }
}




}

标签: androidandroid-fragments

解决方案


推荐阅读