Передача изображения из одной активности другого действия

На SO есть похожие вопросы, но никто не работал для меня.

Я хочу получить щелкнутое изображение в Activity1 и отобразить его в Activity2.
Я получаю изображение с идентификатором щелкнутого изображения следующим образом:

((ImageView) v).getId() 

и передавая его через намерение к другой деятельности.

Во втором действии я использую идентификатор изображения следующим образом:

 imageView.setImageResource(imgId); 

Я зарегистрировал значение og image id как в действиях, так и в том же самом.

Но я получаю следующее исключение:

 android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x12/d=0x0 a=2 r=0x7f050000} 

Я думаю, проблема здесь: getId() возвращает Id ImageView а не его исходное изображение .
Все эти изображения присутствуют в drawable .

Любая помощь оценивается.

Для решения этой проблемы есть 3 решения.

1) Сначала преобразуйте изображение в массив байтов, а затем перейдите в Intent и в следующем действии получите массив байтов из Bundle и Convert into Image (Bitmap) и установите в ImageView.

Преобразование битмапа в байт-массив: –

 Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); 

Передайте массив байтов в цель: –

 Intent intent = new Intent(this, NextActivity.class); intent.putExtra("picture", byteArray); startActivity(intent); 

Получить байт-массив из Bundle и преобразовать в bitmap: –

 Bundle extras = getIntent().getExtras(); byte[] byteArray = extras.getByteArray("picture"); Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); ImageView image = (ImageView) findViewById(R.id.imageView1); image.setImageBitmap(bmp); 

2) Сначала сохраните изображение в SDCard и в следующем режиме установите это изображение в ImageView.

3) Передайте Bitmap в Intent и получите bitmap в следующей активности из пакета, но проблема в том, что размер вашего Bitmap / Image большой в то время, когда изображение не загружается в следующем действии.

Это не сработает. Вы должны попробовать это так.

Установите для DrawingCache вашего ImageView значение true, а затем сохраните фон в виде растрового изображения и передайте его через putExtra.

 image.setDrawingCacheEnabled(true); Bitmap b=image.getDrawingCache(); Intent i = new Intent(this, nextActivity.class); i.putExtra("Bitmap", b); startActivity(i); 

И в вашей следующей деятельности,

 Bitmap bitmap = (Bitmap) intent.getParcelableExtra("Bitmap"); imageView.setImageBitmap(bitmap); 

Идеальный способ сделать это коротким. Это код отправителя .class file

 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher; Intent intent = new Intent(); Intent.setClass(.this,  

и это код файла classа получателя.

 Bitmap bitmap = (Bitmap)this.getIntent().getParcelableExtra("Bitmap"); ImageView viewBitmap = (ImageView)findViewById(R.id.bitmapview); viewBitmap.setImageBitmap(bitmap); 

Не нужно сжимать. это оно

  • Android Speech Recognition как услуга на Android 4.1 и 4.2
  • Как запускать службу каждый день в полдень и при каждой загрузке
  • Передача данных ArrayList в веб-службу SOAP в android
  • Как реализовать Android Pull-to-Refresh
  • Один и тот же навигационный ящик в разных действиях
  • Как настроить кнопку «Назад» на ActionBar
  • В чем преимущество ViewHolder?
  • Как получить высоту ActionBar?
  • Проблема загрузки swf-файла в android
  • Как использовать индикатор активности на iPhone?
  • Android Get Application 'Home' Data Directory
  • Давайте будем гением компьютера.