Android 片段内部包含片段的BottomNavigationView
我在理解Android中的片段时遇到了一些问题 myAndroid 片段内部包含片段的BottomNavigationView,android,android-fragments,android-bottomnavigationview,Android,Android Fragments,Android Bottomnavigationview,我在理解Android中的片段时遇到了一些问题 myMain活动的底部导航有三项:FragmentA,FragmentB,FragmentC FragmentC有一个按钮。当用户单击该按钮时,另一个fragmented将显示其他信息 fragmented应该在工具栏中有一个向上按钮。当用户单击该按钮时,他返回到FragmentC 当用户从导航中选择不同的片段时,fragmented应该消失 在我按下按钮的时候,我试着用这个 FragmentManager manager = requireA
Main活动的底部导航有三项:FragmentA
,FragmentB
,FragmentC
FragmentC
有一个按钮。当用户单击该按钮时,另一个fragmented
将显示其他信息
fragmented
应该在工具栏中有一个向上按钮。当用户单击该按钮时,他返回到FragmentC
- 当用户从导航中选择不同的片段时,
fragmented
应该消失
在我按下按钮的时候,我试着用这个
FragmentManager manager = requireActivity().getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.nav_host_fragment, new FragmentD());
transaction.addToBackStack(null);
transaction.commit();
使用nav\u host\u fragment
作为my MainActivity底部导航项的片段容器
- 为什么不将
transaction.replace
replaceFragmentC
替换为FragmentD
?当我按下按钮时,FragmentD
出现在FragmentC
上方,背景透明<当我从底部导航中选择不同的项目时,代码>片段
也不会被其他片段替换。是因为我正在使用nav\u host\u fragment
容器处理FragmentD
解决方案是使用导航,而不是分段事务 在导航xml文件中,我添加了FragmentD和FragmentC的一个操作,目标是FragmentD。在按钮的onClick中,我现在调用
Navigation.findNavController(view).navigate(R.id.fragment\u c\u到\u fragment\u d)代码>
要使按钮正常工作,我必须覆盖onSupportNavigateUp:
@覆盖公共布尔值onSupportNavigateUp(){
返回Navigation.findNavController(this,R.id.main_片段).navigateUp()||
super.onSupportNavigateUp();}
在使用导航时,为什么要尝试执行碎片事务?你不只是因为什么?谢谢@ian,这帮了大忙。在导航xml文件中,我添加了FragmentD和FragmentC的一个操作,目标是FragmentD。在按钮的onClick中,我现在调用Navigation.findNavController(view).navigate(R.id.fragment\u c\u到\u fragment\u d);唯一不起作用的是工具栏上的“向上”按钮。你知道我该怎么做吗?它在那里,但不起作用,找到了。我必须重写onSupportNavigateUp:@override公共布尔onSupportNavigateUp(){return Navigation.findNavController(这个,R.id.main_片段).navigateUp()| | super.onSupportNavigateUp()}