2016-12-29 13 views
0

アクティビティ1には3つのボタンがあります。 btn1と2と3を使用しています.3つのimageViews、imageView1と2と3を持つActivity2を持っています。私はact1のbtn1をクリックし、act2(可視)のimageView1に画像を送り、btn1を再度クリックすると、行為2で。 act2でbtn2をクリックすると、act2(可視)のimageView2に画像を送信し、もう一度btn2をクリックすると、act2の画像は非表示(非表示)になります。そしてまたbtn3。私は変更を保存してwhant私は、アプリケーションを終了するときに変更を欠場しないでください。どうやってやるの?アクティビティから画像を送信し、別のアクティビティで画像を取得する

+1

いくつかのコードを提供してください –

+0

あなたはactivity1のボタンをクリックしながらactivity2が見えるようにしますか?まあ、それは可能だが、ハックアップ。 – xizzhu

+0

アクティビティ2は表示されず、アクティビティ2の画像だけが表示されます – Nima

答えて

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

そして、あなたは目に見えない/見えるようにする必要があり3 ImageViewsのかを選択することbtnClicked値を使用することができます。 お手伝いをしてください。

0

インテントを使用して、2つのアクティビティ間で情報を渡すことができます。次のいずれかが可能です。

  1. は、受信アクティビティに送る活動からのファイルの場所を渡し送る活動にbyte[]に画像のBitmapに変換して、受信活性または
  2. にそれを渡す

イメージをBitmapに変換してからbyte[]に変換してから、2つのアクティビティの間に「大量」の情報を渡すと、前者の方法がより高価になることに注意してください。後者の方法では、単に場所を渡してリソースをレンダリングしているだけです。

方法1の例:あなたは、その後で、あなたのImageViewに画像をレンダリングすることができ

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

:送信アクティビティで

:受信アクティビティで

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

ボタンの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にあります。あなたの他の質問については

someImageView.setBackgroundDrawable(d); 

あなたは、あなたのイメージがあなたのImageViewの可視性を操作することで表示/非表示にすることができます。

imageView.setVisibility(View.VISIBLE); 
imageView.setVisibility(View.INVISIBLE); 

またsavedInstanceState呼ばれるBundleを使用して、画像の状態を保存することができます。画像を切り替えるときや、onCreateの方法で画像の状態(可視性)を更新するようにしてください。

関連する問題