在作物库的方法中从意图中获取数据

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 库来处理图像。

【讨论】:

以上是关于在作物库的方法中从意图中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift3中从库的PHAsset中获取图像文件名

在 React-redux 和 Redux-Thunk 中从 API 获取数据的问题

在 Model 的 beforeSave 方法中从 Form 中获取数据

在单个查询中从他们的 ID 获取相关数据的最佳方法是啥?

在 Activity 的“onCreate”方法中从在线 MySQL DB 获取数据

如何使用 redux-saga 在 getInitialProps 中获取数据。然后在 getInitialProps 方法中从 redux store 获取响应?