在我的应用程序中,我使用了android导航抽屉。基本上,它工作正常。在该用户可以使用导航抽屉导航到关于我们,家庭等片段。但是当我在标题栏上实现后退按钮时,它会打开导航抽屉,而不会返回到前一个片段。
前: -
认为一个用户启动应用程序,现在他被定向到主页片段。然后使用导航抽屉将用户导航到“关于我们”片段,然后他尝试使用后退按钮返回到主页片段。当他按下后退按钮时,导航抽屉被打开而没有将他带到主页片段。
我认为Android还会将开放式导航抽屉动作添加到后台堆栈。
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else{
super.onBackPressed();
}
}
这是我如何更改onNavigationItemSelected(MenuItem item)
if(fragment1 != null){
FragmentManager fragmentManager = getSupportFragmentManager();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.screen_area, fragment1).addToBackStack("fragment");
ft.commit();
}
那么,有没有办法回到以前的片段页面转义打开导航抽屉?或者有没有办法获得任何以前的片段?
答案 0 :(得分:1)
我假设您正在使用工具栏显示后退箭头,您希望在进入片段时禁用抽屉,因为您必须做两件事。
在创建片段时启用抽屉锁定模式
public void setDrawerState(boolean isEnabled) {
if (isEnabled) {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
drawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_UNLOCKED);
drawerToggle.setDrawerIndicatorEnabled(true);
drawerToggle.syncState();
}
else {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
drawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
drawerToggle.setDrawerIndicatorEnabled(false);
drawerToggle.syncState();
}}
在片段内添加按钮弹出操作。
Toolbar toolbar = (ToolBar)getActivity().findViewById(R.id.toolbarId);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().onBackPressed();
}
});