Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段内部包含片段的BottomNavigationView_Android_Android Fragments_Android Bottomnavigationview - Fatal编程技术网

Android 片段内部包含片段的BottomNavigationView

Android 片段内部包含片段的BottomNavigationView,android,android-fragments,android-bottomnavigationview,Android,Android Fragments,Android Bottomnavigationview,我在理解Android中的片段时遇到了一些问题 myMain活动的底部导航有三项:FragmentA,FragmentB,FragmentC FragmentC有一个按钮。当用户单击该按钮时,另一个fragmented将显示其他信息 fragmented应该在工具栏中有一个向上按钮。当用户单击该按钮时,他返回到FragmentC 当用户从导航中选择不同的片段时,fragmented应该消失 在我按下按钮的时候,我试着用这个 FragmentManager manager = requireA

我在理解Android中的片段时遇到了一些问题

my
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
    replace
    FragmentC
    替换为
    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()}