0

カメラでキャプチャした画像をバンドルに保存して、2 番目のアクティビティに移動するにはどうすればよいですか? ここでどこが間違っていますか?

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAM_REQUEST) {

        if (resultCode == RESULT_OK) {

            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");

            Intent i = new Intent(this, PostActivity.class);
            i.putExtra("name", thumbnail);
            startActivity(i);



        }
    }
}
4

2 に答える 2

1

Bitmap は Parcelable を実装しているため、以下を使用する必要があります。

Bitmap thumbnail = (Bitmap) data.getParcelableExtra("data");
于 2015-04-22T08:26:19.173 に答える
0

ビットマップを 2 番目のアクティビティに渡す方法はいくつかあります。

Bundleformを渡すことができますIntent

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAM_REQUEST) {
            if (resultCode == RESULT_OK) {    
                Bundle extras =  data.getExtras()    
                Intent i = new Intent(this, PostActivity.class);
                i.putExtra("extras", extras);
                startActivity(i);
            }
     }
}

そして、PostActivityあなたは呼び出すことができます

 Bundle extras = getIntent().getBundleExtra("extras")
 Bitmap thumbnail = (Bitmap) extras.get("data");

または、画像のみを渡したい場合は、ビットマップをバイト配列に変換する必要があります

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == CAM_REQUEST) {
                if (resultCode == RESULT_OK) {  
                    Intent intent = new Intent(this, PostActivity.class);
                    Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
                    ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    thumbnail.compress(Bitmap.CompressFormat.PNG, 100, stream);
                    byte[] byteArray = stream.toByteArray();
                   intent.putExtra("image",byteArray);
                   startActivity(i);
               }
          }
}

または、あなたの方法も正しいはずです。方法で取得する必要がありBitmapます getParcelableExtra(String)

 Bitmap thumbnail = getIntent().getParcelableExtra("data");
于 2015-04-22T08:18:46.470 に答える