Как передать ImageView, выбранный из внутреннего хранилища, между операциями - PullRequest
0 голосов
/ 06 июня 2019

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

ImageView imageView_selectedImage;

imageView_selectedImage =(ImageView)findViewById(R.id.imageView_selectedImage);

Button button_goToNextActivity = (Button) findViewById(R.id.button_goToNextActivity);

button_goToNextActivity.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
       Intent intent = new Intent(this, nextActivity.class);
       intent.putExtra("resId", R.id.selectedImage);
       startActivity(intent);
      }
}

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Не передавайте просмотр изображений к следующему занятию.

Вы можете передать uri изображения, выбранного в галерее. \

Получить Uri для выбранного изображения в методе onActivityResult, как показано ниже:

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
       if (requestCode == SELECT_GALLERY) {
            if (data != null) {
                imageSelectedFromGallery(data);
                pictureUri=data.getData();
                imageView_selectedImage.setImageURI(pictureUri);
            }
        }
    }

Примечание **: переменная make pictureUri instance вместо переменной local.

Передача Uri изображения в следующую операцию, как показано ниже:

 Intent intent=new Intent(Main2Activity.this,NextActivity.class);
 intent.putExtra("pictureUri",pictureUri);
 startActivity(intent);

Получите Image Uri в следующем упражнении и установите в imageView:

 ImageView imageview=findViewById(R.id.imageview);
 Bundle bundle=getIntent().getExtras();
 if(bundle!=null) {
      String pictureUri = bundle.getString("pictureUri");
      imageview.setImageURI( Uri.parse(pictureUri));
 }

Надеюсь, это сработает для вас.

0 голосов
/ 07 июня 2019
imageView.invalidate();
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();

ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 90, baos);
        byte[] b = baos.toByteArray();
        String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT);

Затем передайте байтовый массив для следующего действия.

Intent intent = new Intent(this, nextActivity.class);
   intent.putExtra("image", imageEncoded);
   startActivity(intent);

Получите байт из второго действия намерения.

Bitmap bmp;

byte[] byteArray = getIntent().getByteArrayExtra("image");
bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

Set the bitmap to the imageview of the second activty

imageview.setImageBitmap(bmp);
...