2016-01-09 7 views
0

Я делаю приложение, и в этот момент у меня есть два разных намерения, несущих изображения. Я пытаюсь передать эти изображения в одну и ту же активность в imageViews.ANDROID - 2 разных намерения открывает ту же самую деятельность

Может ли кто-нибудь помочь? Благодаря!!

Мой код:

ImageButton btn_insert = (ImageButton)findViewById(R.id.btn_insert); 
    btn_insert.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent i = new Intent(getApplicationContext(), ViewClothes.class); 
      i.putExtra(ITEM_IMAGE1, image1); 
      startActivity(i); 

      Intent i2 = new Intent(getApplicationContext() , ViewClothes.class); 
      i2.putExtra(ITEM_IMAGE2 , image2); 
      startActivity(i2); 


     } 
    }); 

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

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.view_clothes); 

    Intent i = getIntent(); 
    ImageView image1 = (ImageView)findViewById(R.id.im1); 
    image1.setImageBitmap(BitmapFactory.decodeFile(i.getStringExtra("image1"))); 

    Intent i2 = getIntent(); 
    ImageView image2 = (ImageView)findViewById(R.id.im2); 
    image2.setImageBitmap(BitmapFactory.decodeFile(i2.getStringExtra("image2"))); 



} 

ответ

3

Вы dubbled в Intent и вы запустили следующий Activity дважды.

Одно намерение может иметь несколько объектов и передавать их в действие. Один Намерение используется для запуска следующего действия, но вы можете легко добавить несколько объектов с ней следующим образом:

// first activity 
Intent i = new Intent(getApplicationContext(), ViewClothes.class); 
i.putExtra(ITEM_IMAGE1, image1); 
i.putExtra(ITEM_IMAGE2 , image2); 
startActivity(i); 

И получил все изображения, как:

// next activity 
ImageView image1 = (ImageView)findViewById(R.id.im1); 
ImageView image2 = (ImageView)findViewById(R.id.im2); 

Intent i = getIntent(); 
image1.setImageBitmap(BitmapFactory.decodeFile(i.getStringExtra(ITEM_IMAGE1))); 
image2.setImageBitmap(BitmapFactory.decodeFile(i.getStringExtra(ITEM_IMAGE2))); 

Другим решением может быть использование a StringArray для ваших нескольких изображений. В первой деятельности, вы можете заполнить массив:

// populate the array 
String[] images = new String[] { image1, image2 }; 
// pass the array 
Intent i = new Intent(getApplicationContext(), ViewClothes.class); 
i.putExtra(ARRAY_IMAGES, images); 

И переходите в Intent, чтобы получить его, как это:

// retrieve it 
String[] images_passed = getIntent().getStringArrayExtra(ARRAY_IMAGES); 
// show the images 
image1.setImageBitmap(BitmapFactory.decodeFile(images_passed[0])); 
image2.setImageBitmap(BitmapFactory.decodeFile(images_passed[1])); 
+0

СПАСИБО за немедленную реакцию! Я попробую! Еще раз спасибо! –

+0

Рад помочь @ Ntina.Tsif. После того, как вы попробуете, дайте мне знать, помог ли мой ответ. – Fllo

+0

На самом деле я думаю, что это не сработает ... потому что я забываю упомянуть, что у меня есть несколько gridViews .. и image1 - это фотография с первого, а image2 - со второго ... извините! Есть предположения? –