BottomSheetDialogFragment

BottomSheetDialogFragment

我已经将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/

    10-10 16:09