Получить данные из намерения в методе библиотеки культур - PullRequest
0 голосов
/ 16 мая 2018

Это мой код:

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 
ResultInfo{who=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

Буду признателен, если кто-нибудь сможет мне помочь.

1 Ответ

0 голосов
/ 17 мая 2018

Это потому, что вы неправильно используете библиотеку.Вам нужно использовать следующий код:

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:обрабатывать изображение.

...