如何从Adapter获取startActivityForResult以将结果返回到Fragment

时间:2013-03-29 17:28:31

标签: android adapter fragment

我有几个带有自定义ListView的片段。他们使用我的自定义ListAdapter,我在其中处理列表元素的点击。我需要从这个OnClickListener启动另一个活动,并获取一些信息回到Fragment。我尝试使用

Intent intent=new Intent(context, DataFillerActivity.class);  
((Activity) context).startActivityForResult(intent, 3);

但DataFillerActivity将结果返回给MainActivity,而不是Fragment。 那么解决这个问题的最佳方法是什么?谢谢

4 个答案:

答案 0 :(得分:7)

在主活动中创建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);
        }
    }

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

答案 1 :(得分:5)

史蒂夫写道,片段应该是模块化的。但是,这意味着通信应该通过任何活动但保留在片段内。

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

答案 2 :(得分:3)

要更新您的片段,唯一的方法应该是活动。这是因为片段设计为模块化。

http://developer.android.com/training/basics/fragments/communicating.html

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

答案 3 :(得分:2)

只需覆盖Activity类中的onActivityresult并将结果传递给活动中的片段,您可以找到片段,但只能标记您的标记