我正在使用导航抽屉,汉堡菜单显示在所有右侧屏幕上,但在其他片段上,当我单击后退箭头时,当我想要返回到堆栈中的上一个屏幕时,导航抽屉会打开。
如何更改行为,以便在显示箭头时捕获用户单击箭头的行为?
我正在使用带有片段的导航抽屉。在主活动中,我使用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;
}
发布于 2020-08-22 01:41:28
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();
https://stackoverflow.com/questions/63525227
复制相似问题