如何从第二个子片段回调到原始父片段?

时间:2019-01-14 08:46:25

标签: android-fragments callback fragment

我目前有ParentFragment,它正在打开一个ActionSheetFragment,而ActionSheetFragment中的onClick按钮会打开另一个片段 ValidationFragment ,以消除当前片段。

我想在取消ValidationFragment时刷新ParentFragment的内容。不调用ParentFragment的onResume方法。

我尝试使用回调,但是它仅适用于两个片段。

我也尝试了setFragment和getFragment方法。它们都不起作用,因为我在中间有片段,即ActionSheetFragment,在打开ValidationFragment之后将其关闭。有人可以帮我解决这个问题吗???

1 个答案:

答案 0 :(得分:1)

当从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.
            }
    }
}