我已将BottomSheetDialogFragment附加到我的片段之一。在该底页中,我给出了选项
对于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。如何实现?
答案 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(...);
然后,您将在父片段中得到此响应。