知乎Matisse在fragment中使用

项目地址:https://github.com/zhihu/Matisse

前提:fragment想要获取activity的返回值,需要用Fragment自带的fragment.startActivityForResult()方法启动activity,并重写 onActivityResult() 获取到返回数据

fragment中使用(注意在fragment中使用,Matisse.from()的传参是Fragment,不是activity,官方文档没找到传fragment这个信息,这个我是查看源码才发现的,之前一直获取不到返回值,就是这个参数传错了):

Matisse内部 启动MatisseActivity的源码:

Matisse.from(Fragment.this)
        .choose(MimeType.ofImage(), false)
        .countable(true)
        .capture(true)
        .captureStrategy(
                new CaptureStrategy(true, "com.dingli.muck.fileprovider", "test"))
        .maxSelectable(1)
        .addFilter(new GifSizeFilter(320, 320, 5 * Filter.K * Filter.K))
        .gridExpectedSize(
                mActivity.getResources().getDimensionPixelSize(R.dimen.grid_expected_size))
        .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
        .thumbnailScale(0.85f)
        .imageEngine(new GlideEngine())
        .setOnSelectedListener((uriList, pathList) -> {
            Log.e("onSelected", "onSelected: pathList=" + pathList);
        })
        .showSingleMediaType(true)
        .originalEnable(true)
        .maxOriginalSize(10)
        .autoHideToolbarOnSingleTap(true)
        .setOnCheckedListener(isChecked -> {
            Log.e("isChecked", "onCheck: isChecked=" + isChecked);
        })
        .forResult(REQUEST_CODE_CHOOSE);

fragment中重写onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Log.e("", "");

    if (requestCode == REQUEST_CODE_CHOOSE && resultCode == RESULT_OK) {
        List<Uri> uris = Matisse.obtainResult(data);
        List<String> paths = Matisse.obtainPathResult(data);
        Log.e("OnActivityResult ", String.valueOf(Matisse.obtainOriginalState(data)));
    }
}

fragment中使用注意就这点坑,记录下,后面有问题再补充吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值