kotlint 调用相机注意

最近学习 kotlin 调取相机时出现以下错误

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method 

kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState

错误原因 kotlin 的onActivityResult 方法中 data :  intent 不能为 null, 而在Java 中这一项是可以为 null 的

所以我的代码在 java 项目中正常,在 konlit 中闪退

解决思路:kotlin 中必须要返回参数,而相机为了适配 7.0 返回 intent 一直为 null,我又想使用 Kotlin 开发,索性我就定一个java文件的父类来处理相机的回调,等剪切完成后再做接口回调到调用类。

public class CameraBaseActivity extends BaseActivity {
    private OnCommitListener commitListener;
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK)
            switch (requestCode) {
                case Constant.REQUEST_CAMERA:
                    File file = FileUtil.Companion.getInstance().getFile();
                    FileUtil.Companion.getInstance().cropImageUri(this, file);
                    break;
                case Constant.REQUEST_PHOTO_ALBUM:
                    String imagePath;
                    if (Build.VERSION.SDK_INT >= 19) {
                        imagePath = FileUtil.Companion.getInstance().handleImageOnKitKat(this, data);
                    } else {
                        imagePath = FileUtil.Companion.getInstance().handleImageBeforeKitKat(this, data);
                    }
                    if (imagePath != null) {
                        FileUtil.Companion.getInstance().cropImageUri(this, new File(imagePath));
                    }
                    break;
                case Constant.REQUEST_CROP_PICTURE:
//                    FileUtil.Companion.getInstance().deleCameraFile();
                    String cropImgPath = FileUtil.Companion.getInstance().getCropImgPath();
                    if(commitListener != null){
                        commitListener.commit(cropImgPath);//将图片路径回调出去
                    }
                    ToastUtil.toastShow(this, cropImgPath);
                    LogUtil.e("cropImgPath= " + cropImgPath, getClass());
                    break;
            }

    }

    /**
     * 设置回调接口
     * @param commitListener
     */
    public void setOnCommitListener(OnCommitListener commitListener) {
        this.commitListener = commitListener;
    }
}

猜你喜欢

转载自blog.csdn.net/ff_hh/article/details/80423298