2016-10-16 2 views
-4

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

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Intent intent = new Intent(this, Main2Activity.class); 
    startActivity(intent); 

    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 

    Bitmap bp = (Bitmap) data.getExtras().get("data"); 
    iv.setImageBitmap(bp); 

} 

Я создал другую деятельность, но я не знаю, передать растровое изображение в secondactivity.

+0

Было бы неплохо, если бы вы попросили о помощи, вместо того, чтобы требовать помощи. – Bas

+0

Возможно, вам захочется понять, как используются намерения. У вас явно есть data.getExtras(). Get ("data") ', и есть соответствующий метод putExtra класса Intent, который вам нужно запустить Activity. Кроме того, попробуйте найти потенциальный дубликат перед отправкой –

+1

Обратите внимание, что «Intent» должен быть довольно небольшим, а это значит, что ваш «битмап» должен быть довольно небольшим (до 1 МБ). – CommonsWare

ответ

0

Вот как вы можете отправить данные в следующую операцию. И получить его в следующем действии.

intent.putExtra("bitmap", bp); 

Получение его:

// getIntent() Returns the intent that started the activity. 
Intent intent = getIntent(); 
Bitmap bp = intent.getParcelableExtra("bitmap"); 

И как @ cricket_007 предложил вам, возможно, захотите взглянуть на намерения. https://developer.android.com/reference/android/content/Intent.html

0

Измените код, как показано ниже

Bitmap bp = (Bitmap) intent.getParcelableExtra("data"); 
iv.setImageBitmap(bp); 
0

Если растровое изображение существует в виде файла или ресурса, его лучше передать URI или RESOURCEID растрового изображения, а не само растровое прохождения растровый требуют высокого чем URI.

Если вы все еще хотите передать растровое изображение, напишите ниже код в первой активности.

Intent i = new Intent(this, Second.class) 
i.putExtra("Image", bitmap); 
startActivity(i); 

и в вашей второй деятельности вы можете получить его

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("Image"); 
0

В то время как вы можете передать Bitmap в виде parcelable экстра, это не всегда работает для меня в прошлом. Я считаю, что лучше сжать Bitmap и передать его второму действию в виде массива байтов.

В первой деятельности:

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 

Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
intent.putExtra("bitmap",byteArray); 

Во второй деятельности:

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

Bitmap реализует Parcelable, так что вы всегда можете передать его в намерении:

Intent intent = new Intent(this, NewActivity.class); 
intent.putExtra("BitmapImage", bitmap); 

и извлеките его на другом конце:

Intent intent = getIntent(); 
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage"); 
Смежные вопросы