在作物库的方法中从意图中获取数据
Posted
技术标签:
【中文标题】在作物库的方法中从意图中获取数据【英文标题】:Get data from intent in method of crop library 【发布时间】:2018-05-16 19:32:59 【问题描述】:这是我的代码:
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crop);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE);
protected void onActivityResult(int requestCode, int resultCode, Intent data)
// handle result of CropImageActivity
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK)
((ImageView) findViewById(R.id.quick_start_cropped_image)).setImageURI(result.getUri());
Toast.makeText(
this, "Cropping successful, Sample: " + result.getSampleSize(), Toast.LENGTH_LONG)
.show();
else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE)
Toast.makeText(this, "Cropping failed: " + result.getError(), Toast.LENGTH_LONG).show();
当我拍照时,我的应用程序崩溃了。我手机上的例外是:
java.lang.RuntimeException: Failure delivering result
ResultInfowho=null, request=203, result=-1, data=Intent act=inline-
data (has extras) to activity
com.example.michael.matcalc/com.example.michael.matcalc.Crop:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.net.Uri
com.theartofdev.edmodo.cropper.CropImage$ActivityResult.getUri()' on a
null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:4355)
...
我认为数据有问题。它在这一行崩溃:
((ImageView) findViewById(R.id.quick_start_cropped_image)).setImageURI(result.getUri());
我使用的库是这样的:https://github.com/ArthurHub/Android-Image-Cropper
如果有人可以帮助我,我将不胜感激。
【问题讨论】:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE ); intent.putExtra( MediaStore.EXTRA_OUTPUT); startActivityForResult(intent,CROP_IMAGE_ACTIVITY_REQUEST_CODE );
感谢您的回答,但 putExtra 方法需要两个参数。第二个是什么?
文件地址...
哪个文件?抱歉这个可能很愚蠢的问题,但我是这个话题的新手。
***.com/a/23794837/9025311
【参考方案1】:
这是因为您错误地使用了该库。您需要使用以下代码:
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.start(this);
代替:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE);
这是因为当您调用 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
时,您并没有明确告诉 Crop 库来处理图像。
【讨论】:
以上是关于在作物库的方法中从意图中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
在 React-redux 和 Redux-Thunk 中从 API 获取数据的问题
在 Model 的 beforeSave 方法中从 Form 中获取数据
在 Activity 的“onCreate”方法中从在线 MySQL DB 获取数据
如何使用 redux-saga 在 getInitialProps 中获取数据。然后在 getInitialProps 方法中从 redux store 获取响应?