我目前有ParentFragment正在打开一个ActionSheetFragment,从ActionSheetFragment的onClick按钮打开另一个片段ValidationFragment,以消除当前片段。
当ValidationFragment被关闭时,我想刷新ParentFragment的内容。不调用ParentFragment的onResume方法。
我尝试使用回调,但它仅适用于两个片段。
我也尝试了setFragment和getFragment方法。它们都不起作用,因为我在中间有片段,即ActionSheetFragment,在打开ValidationFragment之后将其关闭。有人可以帮我解决这个问题吗?
最佳答案
当从ParentFragment调用ActionSheetFragment时,
将parentFragment设置为targetFragment
val actiondialog = ActionSheetFragment.getInstance()
actiondialog.setTargetFragment(this, 119)
actiondialog.show(this.fragmentManager, "ActionSheetFragment")
当从ActionSheetFragment调用ValidationFragment时,只需将targetFragment转发到ValidationFragment即可:
val validationFragment = ValidationFragment.getInstance()
validationFragment.setTargetFragment(targetFragment, 119)
validationFragment.show(this.fragmentManager, "ValidationFragment")
[email protected]()
因此,在ParentFragment中,您将获得具有相同代码的activityResult,
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
119 ->
if (resultCode == Activity.RESULT_OK) {
// DO YOUR REFRESHING CODE HERE.
}
}
}