Return 来自 Activity B 的 Activity 中的 onActivityResult,从 ActivityA 的子片段开始

Return onActivityResult in ActivityA from ActivityB, started from child fragment of ActivityA

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

我有 ActivityA 及其片段:Fragment1Fragment2,以及这两个片段可以打开ActivityB

Fragment1 是带有标记的 maps 片段,Fragment2 是 list。单击标记和列表项都会导致 ActivityB,这是一个 关于 activity 的信息,其中包含地图上特定位置的信息。

我能做的是 - 从 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打开的,即list fragment.

我尝试在我的父 ActivityA 中添加上面的代码,但没有成功。

所以,我的问题是 - 当 ActivityB 从其子 Fragment1 或其子 Fragment1 中打开时,是否有一种方法可以使用 onActivityResult return ActivityB 到 ActivityA 的结果片段2

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