从ActivityB返回活动A中的onActivityResult,从ActivityA的子片段

时间:2018-03-25 13:31:25

标签: java android android-fragments android-intent onactivityresult

我有两个活动,其中一个有两个片段。

我的 ActivityA 及其片段: Fragment1 Fragment2 ,两者都可以打开 ActivityB

Fragment1是带有标记的地图片段,Fragment2是列表。点击时,标记和列表项都会导致ActivityB,这是一个关于活动,其中包含有关地图上某个位置的信息。

我能做的是 - 使用:

从Fragment1打开ActivityB
startActivityForResult(intent, RESTAURANT_DESCRIPTION);

然后在我的Fragment1中我得到了这样的结果:

public void onActivityResult(int requestCode, int resultCode, Intent intent){
    switch(requestCode){
        case RESTAURANT_DESCRIPTION: 
            //calling my method
            ZoomToMarkerFragment();
            //maybe call reload method from ListFragment
            break;
        case ADD_RESTAURANT: // TODO
            break;
    }
}

当我从Fragment1 打开ActivityB时,上面的代码给了我想要的结果,即映射片段,但我希望能够做到的是如果它是从Fragment2,即列表片段。

我尝试在我的父ActivityA中添加上面的代码,但它不起作用。

所以,我的问题是 - 是否可以使用onActivityResult将ActivityB的结果返回给ActivityA,当它从其子Fragment1或其子Fragment2 打开时?

1 个答案:

答案 0 :(得分:1)

  • Activity的onActivityResult中,致电super.onActivityResult()
  • 如果您希望结果出现在您的片段中,请确保从Fragment执行startActivityForResult(..)而不是使用getActivity()。startActivityForResult(..)。
  • 此外,如果您使用的是nested fragments,则子片段应调用getParentFragment().startActivityForResult(..),以便父片段将具有名为
  • 的onActivityResult方法