2015-10-08 2 views
-1

У меня есть фрагмент, который содержит четыре изображения каждого изображения при нажатии, открывает галерею для пользователя, чтобы выбрать изображение оттуда в результате действия при получении имени и пути изображения. Я передаю это результат к активности через намерение, которое обрабатывает обрезку изображения в операции обрезки после завершения обрезки, я не знаю, как отправить результат обрезанного изображения на фрагмент и поместить его в изображение, тот же самый процесс сделано для 4 изображений, как я могу это достичь. Вот мой стартовый код.Обработка результата от операции до фрагмента

enter code here 

attach_button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      pickFromGallery(); 
     } 
    }); 
    private void pickFromGallery() 
    { 
    Intent galleryIntent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(galleryIntent, RESULT_LOAD_IMG); 
} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    try { 
     // When an Image is picked 
     if (requestCode == RESULT_LOAD_IMG && resultCode == getActivity().RESULT_OK 
       && null != data) { 
      // Get the Image from data 

      Uri selectedImage = data.getData(); 
      String[] filePathColumn = {MediaStore.Images.Media.DATA}; 

      // Get the cursor 
      Cursor cursor = getContext().getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      // Move to first row 
      assert cursor != null; 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      imgDecodableString = cursor.getString(columnIndex); 
      cursor.close(); 
      startCrop(imgDecodableString); 


     } else { 
      Toast.makeText(getActivity(), "You haven't picked Image", 
        Toast.LENGTH_LONG).show(); 
     } 
    } catch (Exception e) { 
     Toast.makeText(getActivity(), "Something went wrong", Toast.LENGTH_LONG) 
       .show(); 
    } 
} 
private void startCrop(String imageUri) 
{ 
    Intent intent = new Intent(getActivity(),CropActivity.class); 
    intent.putExtra("Image",imageUri); 
    startActivity(intent); 
} 

} в моем кадрировании деятельности вот мой код

enter code here 
Intent i = getIntent(); 
    image = i.getStringExtra("Image"); 
    Log.d("Image",""+image); 
    DisplayMetrics metrics = getResources().getDisplayMetrics(); 
    int imageWidth = (int) ((float) metrics.widthPixels/1.5); 
    int imageHeight = (int) ((float) metrics.heightPixels/1.5); 
    bitmap = BitmapLoadUtils.decode(image, imageWidth, imageHeight); 
    imageCropView.setImageBitmap(bitmap); 
    imageCropView.setAspectRatio(3, 2); 
    findViewById(R.id.crop_btn).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 
      if(!imageCropView.isChangingScale()) 
      { 
       Bitmap b = imageCropView.getCroppedImage(); 
      } 
     } 
    }); 

после кадрирования здесь изображения, мне нужно, чтобы установить это обрезанным изображение в окне изображения в фрагменте же для остальной части изображения с тем же процессом, как это можно достичь. Любая помощь будет оценена по достоинству.

ответ

1

Вы можете начать свою деятельность с помощью метода startActivityForResult (...), чтобы вы могли отправить данные обратно.
Как передать растровое изображение с использованием намерения, отметьте this stackoverflow question.

Тогда вы можете получить растровое изображение на onActivityResult (...) метод вашего фрагмента.

+0

, если я положил startActivity для результата моей активности в растении и через намерение растрового изображения в активности фрагмента, я обрабатываю намерение, как я могу узнать, какое изображение выбрано таким образом, есть 4 изображения, которые можно запросить более подробно –

+0

Вы помещаете startActivityForResult в свой фрагмент и вызываете, затем вызываете setResult из CropActivity и передаете растровое изображение (или путь сохраненного растрового изображения) с помощью намерения. Вы можете установить int int при щелчке изображения на основе изображения, а затем onActivityResult, проверить, какое изображение было нажато на основе сохраненного значения int –

1

Передача битмапов с помощью намерений не является хорошей практикой и не будет работать, если битмап большой, и поэтому его следует избегать.

Я бы предложил u сохранить растровое изображение на диске и передать путь к сохраненному изображению фрагменту. Проверьте изменение принятого ответа в этом post

Также не следует вызывать startActivity() из фрагмента. Это должно быть сделано из другого вида деятельности. Проверьте это Communicating With Fragments Guide

Смежные вопросы