我正在制作一个应用程序,此时我有两个不同的意图携带图像。我正试图在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")));
}
答案 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]));