ANDROID - 2个不同的意图打开相同的活动

时间:2016-01-09 14:26:21

标签: android android-intent

我正在制作一个应用程序,此时我有两个不同的意图携带图像。我正试图在imageViews中的同一活动中传递这些图像。

有人可以帮忙吗?谢谢!

我的代码是:

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")));



}

1 个答案:

答案 0 :(得分:3)

您对Intent进行了修改,然后您启动了下一次Activity两次。

单个Intent可以有多个对象并将它们传递给Activity。一个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)));

另一种解决方案可能是为您的多张图片使用StringArray。在第一个Activity中,您可以填充数组:

// 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]));