片段的堆栈概念

时间:2019-03-21 18:24:33

标签: android android-fragments

我创建了一个带有导航抽屉的应用程序。我有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();
        }
    }
}




}

0 个答案:

没有答案