我有3个按钮的Activity1。 btn1和2和3.并且Activity2有3个imageViews,imageView1和2和3.我想当我在act1中单击btn1时,将图像发送到act2中的imageView1(可见),再次单击btn1时,图像将消失(不可见)在act2中。当我在act2中单击btn2时,将图像发送到act2中的imageView2(可见),再次单击btn2时,图像将在act2中消失(不可见)。还有btn3。当我退出应用程序时,我会保存更改并且不要错过更改。我怎么能这样做?
答案 0 :(得分:1)
不要将图像从act1发送到act2,只需将它们放在act2中即可。然后当您单击act1中的按钮时,通过putExtra()将按下的按钮的标签发送到act2,如下所示:
public void clickButton1(View view) {
Intent intent = new Intent(this, act2.class);
intent.putExtra("bttnTag", 1);
startActivity(intent);
}
然后对其他两个按钮执行相同操作,将2和3作为相应的标记发送。 然后在act2上,您可以按如下方式点击哪个按钮:
Intent intent = getIntent();
int btnClicked = intent.get("bttnTag", -1);
然后您可以使用该btnClicked值来选择您必须使三个ImageView中的哪一个可见/不可见。 希望它有所帮助。
答案 1 :(得分:0)
您可以使用意图在两个活动之间传递信息。你可以:
Bitmap
转换为发送活动中的byte[]
,然后将其传递给接收活动或请注意,前一种方法更昂贵,因为您要将图像转换为Bitmap
,然后转换为byte[]
,然后在两个活动之间传递“大量”信息。在后一种方法中,您只是传递一个位置并渲染资源。
方法1的示例:
在发送活动中:
// Let image_name be the name of the image file located in your drawable folder
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image_name);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("picture", b);
startActivity(intent);
在接收活动中:
Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
ImageView imageView = (ImageView) findViewById(R.id.image_view_1);
然后,您可以通过在按钮的ImageView
中添加以下行来渲染OnClickListener
中的图片。
imageView.setImageBitmap(bmp);
方法2的示例:
在发送活动中:
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("picname", fileName);
在接收活动中:
Bundle extras = getIntent().getExtras();
String fileName = extras.getString("picname");
File filePath = getFileStreamPath(fileName);
Drawable d = Drawable.createFromPath(filePath.toString());
然后,您可以通过在按钮的ImageView
中添加以下行来设置OnClickListener
drawable。
someImageView.setBackgroundDrawable(d);
关于您的其他问题:
您可以通过操纵ImageView
的可见性隐藏/显示图片。
imageView.setVisibility(View.VISIBLE);
imageView.setVisibility(View.INVISIBLE);
您还可以使用名为Bundle
的{{1}}来保存图片的状态。确保在切换图片时以及savedInstanceState
方法更新图片的状态(可见性)。