从 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"
//....
}
}
我正在使用导航组件,它使用 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"
//....
}
}