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

Dan*_*Dan 9 android adapter fragment

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

Intent intent=new Intent(context, DataFillerActivity.class);  
((Activity) context).startActivityForResult(intent, 3);
Run Code Online (Sandbox Code Playgroud)

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

Bis*_*kar 8

像这样在Main Activity中创建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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

它会将结果代码传递给其子片段.


Ada*_*äck 5

正如史蒂夫所写,片段应该是模块化的.然而,这意味着通信应该经过任何活动,但留在片段中.

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


Ste*_*ett 3

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

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

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