Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从第二个子片段回调原始父片段?_Android_Android Fragments_Callback - Fatal编程技术网

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

Android 如何从第二个子片段回调原始父片段?,android,android-fragments,callback,Android,Android Fragments,Callback,我目前拥有打开ActionSheetFragment的ParentFragment,单击ActionSheetFragment中的按钮可打开另一个片段ValidationFragment取消当前片段 我想在ValidationFragment被解除时刷新ParentFragment的内容。未调用ParentFragment的onResume方法 我尝试使用回调,但它只对两个片段有效 我还尝试了setFragment和getFragment方法。它们都不起作用,因为我在中间有一个片段,即Actio

我目前拥有打开ActionSheetFragment的ParentFragment,单击ActionSheetFragment中的按钮可打开另一个片段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")
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.
            }
    }
}

您忘记在最终对话框的解雇事件targetFragment?.onActivityResult(targetRequestCode,Activity.RESULT\u OK,Activity?.intent)中添加以下代码;好吧,它能用