从 MainActivity 获取 FragmentContainerView 中显示的当前片段

Get current fragment displayed in FragmentContainerView from MainActivity

我正在使用导航组件,它使用 findNavController().navigate() 在片段之间导航。我想从 MainActivity 中检索 FragmentContainerView 中当前显示的片段,因为我想修改“编辑”按钮 setOnClickListener 功能以执行“保存”功能(我已经知道如何更改从编辑到保存的文本)检查当前显示的片段并相应地更改 setOnClickListener 函数。所以在那个特定的片段中,它将执行“保存”功能。但是如何从 MainActivity 获取当前显示的片段?

我看到了很多其他解决方案,但他们都在使用 FragmentTransaction 或者他们只显示获取当前片段的代码,但他们没有显示 MainActivity 的哪一部分将启动代码获取当前片段。有什么帮助吗?我正在使用 Kotlin。

您可以在 NavController 中添加一个 OnDestinationChangedListener MainActivity

navController.addOnDestinationChangedListener { _, destination, _ ->
   if(destination.id == R.id.your_savable_fragment) {
       button.text = "Save"
       //....
   }
   if(destination.id == R.id.your_editable_fragment) {
       button.text = "Edit"
       //....
   }
}