如何解决导航抽屉-汉堡菜单正常工作,但向后箭头打开抽屉
我正在使用导航抽屉,并且在所有右侧屏幕上都会显示汉堡菜单,但是在其他片段上,当我单击后退箭头时,当我想返回到堆栈中时,导航抽屉将打开。上一个屏幕。
如何更改行为,以便在显示箭头(而不是汉堡菜单)时可以捕获单击箭头的用户?
我正在使用带有片段的导航抽屉。在主要活动中,我使用AppBarConfiguration设置顶级目的地:
AppBarConfiguration config = new AppBarConfiguration.Builder(topLevelDestinations)
.setDrawerLayout(drawerLayout)
.build();
NavigationUI.setupActionBarWithNavController(this,navController,config);
NavigationUI.setupWithNavController(navView,navController);
navView.setNavigationItemSelectedListener(this);
我正在捕获来自顶级目的地的所有选择并进行适当的导航:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
item.setChecked(true);
drawerLayout.closeDrawers();
int id = item.getItemId();
switch (id) {
...
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
解决方法
您可能正在寻找getFragmentManager().popBackStack()
方法。这是放置活动的示例代码段:
@Override
public void onBackPressed(){
FragmentManager fm = getFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
Log.i("MainActivity","popping backstack");
fm.popBackStack();
} else {
Log.i("MainActivity","nothing on backstack,calling super");
super.onBackPressed();
}
}
如果是片段,请尝试像这样调用片段:
getSupportFragmentManager().beginTransaction()
.add(detailFragment,"detail") // Add this transaction to the back stack
.addToBackStack(null)
.commit();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。