在android中管理工具栏的导航和从片段到片段的后退按钮

时间:2016-04-26 12:48:52

标签: java android android-fragments android-studio

我的所有片段都通过ActionBarActivity mainActivity )进行控制,在 mainActivity 中实现了DrawerLayout并且所有子片段都被推送通过drawerLayout的列表项单击。我面临的问题是在通过抽屉推送片段之后我想将抽屉图标更改为ToolBar的后退图标,以便用户可以导航到上一个片段并处理android.R.id的回调。回家在同一片段内或 mainActivity

1 个答案:

答案 0 :(得分:11)

您已将Fragment添加到后台堆栈,并在片段管理器中添加侦听器,如下所示

getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
            @Override
            public void onBackStackChanged() {
                if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
                    getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button
                    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            onBackPressed();
                        }
                    });
                } else {
                    //show hamburger
                    getSupportActionBar().setDisplayHomeAsUpEnabled(false);
                    toggle.syncState();
                    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            drawerLayout.openDrawer(GravityCompat.START);
                        }
                    });
                }
            }
        });