Android 如何从适配器启动TactivityForresult以将结果返回到片段

Android 如何从适配器启动TactivityForresult以将结果返回到片段,android,adapter,fragment,Android,Adapter,Fragment,我有几个带有自定义列表视图的片段。他们使用我的自定义ListAdapter,我在其中处理对列表元素的单击。我需要从这个OnClickListener启动另一个活动,并将一些信息返回到Fragment。我试着用 Intent intent=new Intent(context, DataFillerActivity.class); ((Activity) context).startActivityForResult(intent, 3); 但DataFillerActivity将结果返回给

我有几个带有自定义列表视图的片段。他们使用我的自定义ListAdapter,我在其中处理对列表元素的单击。我需要从这个OnClickListener启动另一个活动,并将一些信息返回到Fragment。我试着用

Intent intent=new Intent(context, DataFillerActivity.class);  
((Activity) context).startActivityForResult(intent, 3);
但DataFillerActivity将结果返回给MainActivity,而不是片段。
那么,解决这个问题的最佳方法是什么?谢谢

只需重写Activity类中的
onActivityresult
并将结果传递给活动中的片段,就可以找到片段,但要更新片段,唯一的方法应该是在活动上。这是因为片段被设计成模块化的


如果为结果启动活动,结果将传递给启动请求的活动。现在,您可以将数据传递到所需的片段。

正如Steve所写,片段应该是模块化的。然而,这意味着通信应该不通过任何活动,而是停留在片段内


要解决此问题,请确保您的
ListAdapter
具有对片段的引用,并使用
fragment.startActivityForResult()
。然后结果将返回到片段的
onActivityResult()

在主活动中生成onActivityResult方法,如下所示

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //super.onActivityResult(requestCode, resultCode, data);
        // Check if image is captured successfully

        super.onActivityResult(requestCode, resultCode, data);
        for (Fragment fragment : getSupportFragmentManager().getFragments()) {
            fragment.onActivityResult(requestCode, resultCode, data);
        }
    }

它将把结果代码传递给它的子片段。

已尝试但不起作用,不确定是否是由于与相关的错误造成的。但如果我从片段中调用另一个活动,它确实有效。只有在片段的ListView中调用startActivityForResult时,片段的onActivityResult才会在预期活动开始后立即被调用。我在删除intent.setFlags(intent.FLAG\u activity\u NEW\u TASK)后解决了问题;在调用fragment.startActivityForResult(intent,0)之前+1给你。