如何将结果从BottomSheetDialogFragment传递到启动它的Activity?

时间:2018-08-21 11:07:03

标签: android bottom-sheet

我已将BottomSheetDialogFragment附加到我的片段之一。在该底页中,我给出了选项

  1. 打开画廊
  2. 打开相机

对于Open gallery

private void startGallery() {
        Intent intentGallery = new Intent(baseActivity, SelectImage.class);
        intentGallery.putExtra("LIMIT", 10);
      startActivityForResult(intentGallery, REQUEST_GALLERY_CODE);

        return;
    }

我用BottomSheetDialogFragment编写了此代码。但是, onActivityResult(),我想收听在第一时间启动它的Fragment。如何实现?

1 个答案:

答案 0 :(得分:0)

在BottomSheetDialogFragment中使用具有相同签名的方法onActivityResult

public class ActivityA {

BottomSheetFragment bottomSheet;

...

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        bottomSheet.onActivityResult(requestCode, resultCode, data);
    }

}

修改

如果您想在Fragment中收听onActivityResult,请致电

startActivityForResult(intentGallery, SpotCuesUtils.REQUEST_GALLERY_CODE);

如果您想收听Activity,请致电

getActivity().startActivityForResult(intentGallery, SpotCuesUtils.REQUEST_GALLERY_CODE);

Edit2

了解您的要求之后。我想让您知道这可以通过多种方式实现。我告诉你一个。

在打开它时,只需在BottomSheetFragment中传递您的Fragment实例即可。

bottomSheet.setParentFragment(this);
bottomSheet.show(...);

然后在您的bottomSheet中。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    parentFragment.onActivityResult(requestCode, resultCode, data);
}

或者您可以从片段实例中startActivityForResult

parentFragment.startActivityForResult(...);

然后,您将在父片段中得到此响应。