最近学习 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; } }