我目前有 ParentFragment,它正在打开一个 ActionSheetFragment,单击 ActionSheetFragment 中的按钮会打开另一个 fragment ValidationFragment 关闭当前 fragment 。
我想在 ValidationFragment 关闭时刷新 ParentFragment 的内容。不调用 ParentFragment 的 onResume 方法。
我尝试使用回调,但它只适用于两个 fragment 。
我还尝试了 setFragment 和 getFragment 方法。它们都不起作用,因为我在中间有 fragment ,即 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")
this@ActionSheetDialog.dismiss()
因此,在 ParentFragment 中,您使用相同的代码获取 activityResult,
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
119 ->
if (resultCode == Activity.RESULT_OK) {
// DO YOUR REFRESHING CODE HERE.
}
}
}
关于android - 如何从第二个子 fragment 回调到原始父 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54178135/