1

画像プレビューを含む1つのImaveViewを持つActivity1があります。ボタンを押すと、Activity1 から Activity2 に移動します。Activity2 には画像のプレビューはありませんが、「Activit1 の画像を保存しますか?」というオプション ボタンがあります。はい、もしくは、いいえ。

現在、イメージをディスクに保存してからディスクから読み戻すような間違った方法でやっています。しかし、画像を保存せずに 1 つの imageView を Activity1 から Activity2 に転送する方法はありますか?

Activity1 > ImageView で画像を取得する方法を次に示します。これを Activity2 に移動する必要があります。何か案が?

public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      this.imageView = (ImageView)this.findViewById(R.id.picture);            
      Button photoButton = (Button) this.findViewById(R.id.capture_btn);      
      Button btnShareToEmail = (Button) this.findViewById(R.id.btnshare);
      btnShareToEmail.setOnClickListener(this);

      //photoButton.setOnClickListener(new View.OnClickListener() {
          //@Override
        //  public void onClick(View v) {
          //    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
            //  startActivityForResult(cameraIntent, CAMERA_REQUEST); 
         // }
      //});

      // without frozen
      new Handler().postDelayed(new Runnable() { public void run() { 
          Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
          startActivityForResult(cameraIntent, CAMERA_REQUEST);
      }}, 100);      
  }



  protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {  
        Bitmap photo = (Bitmap) data.getExtras().get("data"); 
        imageView.setImageBitmap(photo);



    }  
  }

編集:

// セット - アクティビティ 1

Intent winShare = new Intent(getBaseContext(), Activity2.class);
winShare.putExtra("Title", "r2.jpg");
winShare.putExtra("image1", photo);         
//int image_link = getIntent().getIntExtra("image1");
startActivityForResult(winShare,0); 

// GET - アクティビティ 2

    Bitmap bitmap = (Bitmap) getIntent().getParcelableExtra("image1"); // BITMAP_SHARED_KEY = "bitmap_shared_key"

    imageView.setImageBitmap(bitmap);
    // save it
    imageView.buildDrawingCache();
    Bitmap bm=imageView.getDrawingCache();
    OutputStream fOut = null;
    Uri outputFileUri;
    try {
      File root = new File(Environment.getExternalStorageDirectory() + File.separator + "MYAPPPPPPPPPS" + File.separator);
      root.mkdirs();
      File sdImageMainDirectory = new File(root, "myPicName.jpg");
      outputFileUri = Uri.fromFile(sdImageMainDirectory);
      fOut = new FileOutputStream(sdImageMainDirectory);
      bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);
      fOut.flush();
      fOut.close();      
   } catch (Exception e) {
     Toast.makeText(this, "Error occured. Please try again later.",Toast.LENGTH_SHORT).show();
   }
4

3 に答える 3

0

まず第一に、この方法でカメラ アクティビティを使用して画像を取得する場合、撮影した画像のサムネイル バージョンを取得していることを理解する必要があります。フルサイズの画像を取得するには、保存する必要があります。詳細については、この件について私が書いたこのブログ投稿をご覧ください。

サムネイルとフル サイズの画像にカメラ アクティビティを使用する

あなたの質問については、この画像をファイルに保存し(ガイドで説明されています)、次のアクティビティに画像の文字列パスを追加して渡すのが最善の方法だと思います。

于 2013-08-04T09:44:55.247 に答える
0

この問題を解決する方法はたくさんあります。そして、ここに2つの簡単な方法があります:

最初に、 SharedPreferencesの詳細を読むことができます

2 つ目は、次のように、このアクティビティから別のアクティビティに追加のビットマップを配置できます。

putExtra:

intent.putExtra(BITMAP_SHARED_KEY, yourBitmap);
startActivity(intent);

あなたが共有した getBitmap

Bitmap bitmap = (Bitmap) intent.getParcelableExtra(BITMAP_SHARED_KEY); // BITMAP_SHARED_KEY = "bitmap_shared_key"
于 2013-08-04T09:44:59.820 に答える