Android 从导航控制器获取片段

Android 从导航控制器获取片段,android,android-fragments,kotlin,navigation,Android,Android Fragments,Kotlin,Navigation,我有一个NavController(navOrdersController),里面有2个片段。我当前的片段是OrderDetailFragment,我希望访问第一个片段(OrdersFragment),以更新MainActivity中的数据。我该怎么做 我尝试了findFragmentByTag和findFragmentByID,但总是返回null 我通过以下方式获得了对OrderDetailFragment的访问权限: this.supportFragmentManager.fragment

我有一个NavController(navOrdersController),里面有2个片段。我当前的片段是OrderDetailFragment,我希望访问第一个片段(OrdersFragment),以更新MainActivity中的数据。我该怎么做

我尝试了findFragmentByTag和findFragmentByID,但总是返回null

我通过以下方式获得了对OrderDetailFragment的访问权限:

this.supportFragmentManager.fragments[position].findNavController().currentDestination


但我需要之前的片段。非常感谢如果两个片段具有相同的父活动,即使用
getActivity()
获取活动引用并使用activity.getSupportFragmentManager查找片段

活动X->片段A->片段B

如果片段B是片段A的子级,则使用getParentFragment。您要查找的片段就是这个片段

如果有什么不清楚的地方,请告诉我

PS:Jetpack导航库做的事情和我们一直在做的一样。因此,前面的活动片段逻辑仍然有效

编辑:

尝试
(parentFragment作为NavHostFragment.childFragmentManager.findframentbyid()

我忘记了上次活动在其布局中声明了NavHostFragment,所以总是会有类型为“NavHostFrament”的根父片段

编辑: 我已经找到了一个解决办法

parentFragment.childFragmentManager.getFragment(Bundle().also { it.putInt("foobar",0) }, "foobar")

不能说代码片段(我在下面添加了)是最好的解决方案,但它为我在Android导航组件实现中使用的
NavHostFragment
中添加了最近/当前的片段起到了作用

您甚至可以用片段覆盖活动的
onActivityResult
,只需获取添加的
片段
,并使用以下代码片段调用它的
onActivityResult

    NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
    Fragment fragment = navHostFragment.getChildFragmentManager().getFragments().get(0);
    fragment.onActivityResult(requestCode, resultCode, data);

谢谢拉胡尔。它不起作用,因为父对象是NavGraph,子对象是OrderDetailFragment。OrdersFragment位于middleNavGraph中不应为父级。因为父项可以是
活动
片段
。不过我不确定。给我几分钟检查一下。它不起作用。“null不能强制转换为非null类型android.navigation.fragment.NavHostFragment”,因为父级为null。我更新了我的问题。我必须与navControllerhere零是backbackback索引(应该是在您自己实现图形的情况下),谢谢Rahul,但仍然不工作,parent为null。碎片在导航控制器内