9

我有几个带有自定义 ListViews 的片段。他们使用我的自定义 ListAdapter,我在其中处理对列表元素的点击。我需要从此 OnClickListener 开始另一个活动并将一些信息返回给 Fragment。我尝试使用

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

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

4

4 回答 4

9

像这样在 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);
        }
    }

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

于 2016-03-28T04:50:28.013 回答
5

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

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

于 2013-04-05T16:47:27.983 回答
3

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

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

如果您为结果启动 Acitivity,则结果将传递给启动请求的 Activity。现在您可以将数据传递给您想要的片段。

于 2013-03-29T18:47:38.587 回答
2

只需onActivityresult在您的 Activity 类中覆盖并将结果传递给来自 Activity 的片段,您可以找到片段,但可以找到您的标签

于 2013-03-29T17:34:14.027 回答