我已经将BottomSheetDialogFragment附加到我的片段之一。在该 Bottom Sheet 中,我给出了选择
对于开放画廊
private void startGallery() {
Intent intentGallery = new Intent(baseActivity, SelectImage.class);
intentGallery.putExtra("LIMIT", 10);
startActivityForResult(intentGallery, REQUEST_GALLERY_CODE);
return;
}
我用
BottomSheetDialogFragment
编写了这段代码,但是的响应onActivityResult(),我想收听首先启动它的Fragment。如何实现呢?
最佳答案
在具有相同签名的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);
编辑2
了解您的要求之后。我想让您知道这可以通过多种方式实现。我告诉你一个。
打开它时,只需在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(...);
然后,您将在父片段中得到此响应。
关于android - 如何将结果从BottomSheetDialogFragment传递到启动它的Activity?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51947336/