【发布时间】:2021-07-04 03:46:05
【问题描述】:
我正在创建一个简单的项目,并且正在使用导航组件。这是我想要实现的目标。我有一个导航图和单个活动,它具有充当 NavHostFragment 的 FragmentContainerView 和显示导航抽屉菜单的 NavigationView。从这个活动中,使用抽屉菜单项和导航图,我可以导航到特定的片段。这个片段包含一个底部导航视图。如何将此底部导航连接到活动的导航,以便能够按下底部导航菜单项并导航到活动导航图中的目的地?我有点用子图来做:目的地有自己的导航图,但这效果不佳,因为在按下导航返回按钮后,用户将导航回该图的起始目的地。
目前我找到的解决方案是,但是后退按钮导航仍然返回到起始目的地(在我的情况下为welcomeFragment),而不是返回到上一个目的地(TeamMainFragment),我认为这意味着目的地导航从底部导航不会添加到返回堆栈。
@Override
public void onStart() {
super.onStart();
BottomNavigationView bottomNavigationView = binding.bottomNavigationView;
NavigationUI.setupWithNavController(bottomNavigationView,Navigation.findNavController(binding.getRoot()));
}
有没有更好的解决方案?
我也试过了
NavHostFragment navHostFragment = (NavHostFragment) getParentFragment();
NavController navController = navHostFragment.getNavController();
BottomNavigationView bottomNavigationView = binding.bottomNavigationView;
NavigationUI.setupWithNavController(bottomNavigationView,navController);
仍然无法正常工作:当我在 insertTeamFragment 中并按下导航返回按钮时
它导航回welcomeFragment,而不是teamMainFragment。
感谢 Adnan 找到了解决方案:
super.onStart();
NavHostFragment navHostFragment = (NavHostFragment) getParentFragment();
NavController navController = navHostFragment.getNavController();
BottomNavigationView bottomNavigationView = binding.bottomNavigationView;
bottomNavigationView.setOnNavigationItemSelectedListener(item -> {
navController.navigate(item.getItemId());
return true;
});
This works as wanted:when in insertTeamFragment and press the back navigate button it navigates back to teamMainFragment.But still don't understand why the NavigationUI solution is not working.If anyone knows,please comment.
【问题讨论】:
标签: android android-fragments android-navigation android-navigation-graph