Как передать галерею изображений из фрагмента в другой вид деятельности? - PullRequest
0 голосов
/ 02 марта 2020

У меня проблема при передаче изображения из моей галереи в другой вид деятельности. Пользовательский интерфейс во фрагменте камеры Пользовательский интерфейс в параметре Activity

Снимок экрана для пользовательского интерфейса, который находится выше. Я уже делаю для фотографирования (Open Camera) и передачи изображения в UI 2 и его работах, но из открытой галереи это не получается, как это сделать?

это мой код в CameraFragment

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_kamera, container, false);
    imageView1 = view.findViewById(R.id.imageView1);
    show_graph = view.findViewById(R.id.show_graph);
    btnTakepic = view.findViewById(R.id.btnTakepic);
    Gofilter = view.findViewById(R.id.Gofilter);

btnTakepic.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selectImage();
        }
    });

Gofilter.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), option.class);
            if(imageView1.getDrawable() == null)
            {
                startActivity(intent);
            }else {
                BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView1.getDrawable();
                Bitmap bitmap = bitmapDrawable.getBitmap();
                intent.putExtra("image", bitmap);
             // intent.putExtra("imageUri", imageUri.toString());
                startActivity(intent);
            }//  else {
             //   BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView1.getDrawable();
              // Bitmap imageBitmap = bitmapDrawable.getBitmap();
              // intent.putExtra("image2", imageBitmap);
                // startActivity(intent);
               //    }

        }
    });

  return view;
}

 private ByteArrayInputStream convertDrawable(ImageView image2){
    BitmapDrawable bitmapDrawable = ((BitmapDrawable) image2.getDrawable());
    Bitmap bitmap = bitmapDrawable.getBitmap();
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
 // bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
    byte[] imageInByte = stream.toByteArray();
    return new ByteArrayInputStream(imageInByte);
}

и это из моего OptionActivity

public class option extends AppCompatActivity {

ImageView imageView;
Uri imageUri;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_option);

    imageView = findViewById(R.id.imageView2);

    Intent intent = getIntent();
     //  Bundle extras = getIntent().getExtras();
    Bitmap bitmap = intent.getParcelableExtra("image");
     //  Bitmap imageUri1 = intent.getParcelableExtra("imageUri");
    if(bitmap!=null){
        imageView.setImageBitmap(bitmap);
    }   
          // else {
           //            Uri imageUri = Uri.parse(extras.getString("imageUri"));
           //            imageView.setImageURI(imageUri);
           //        }
            //        else if (getIntent().getExtras() != null) {
           //            imageUri = Uri.parse(getIntent().getStringExtra("imageUri"));
           //            imageView.setImageURI(imageUri);
          //        }


}
}

Извините за плохой Engli sh, я надеюсь, что кто-нибудь может мне помочь, спасибо:)

1 Ответ

0 голосов
/ 02 марта 2020

Вы должны только передать Uri фотографии. Не весь Bitmap.

  Uri getUri(Bitmap yourBitmapToPass) {
    String path = Environment.getExternalStorageDirectory().toString();
    OutputStream fOut = null;
    File file = new File(path, "tempPhoto.jpg");
    try {
        fOut = new FileOutputStream(file);
        Bitmap pictureBitmap = yourBitmapToPass;
        pictureBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
        fOut.flush();
        fOut.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return Uri.fromFile(file);
}


void open(Intent intent) {
    Uri myUri = Uri.parse(intent.getExtras().getString("imageUri"));
}

и отправьте его следующим образом:

intent.putExtra("imageUri", uriToPass.toString());

Также я предлагаю использовать кэш каталог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...