Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中将字节图像从一个活动传递到另一个活动_Android_Image_Android Activity_Android Intent - Fatal编程技术网

如何在android中将字节图像从一个活动传递到另一个活动

如何在android中将字节图像从一个活动传递到另一个活动,android,image,android-activity,android-intent,Android,Image,Android Activity,Android Intent,可能重复: 我正在android中使用一个摄像头应用程序。在我的应用程序中,我试图将单击的图像传递给另一个活动。代码如下所示: PictureCallback jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { Intent i = new Intent(Hackbook.this

可能重复:

我正在android中使用一个摄像头应用程序。在我的应用程序中,我试图将单击的图像传递给另一个活动。代码如下所示:

 PictureCallback jpegCallback = new PictureCallback() 
    {
        public void onPictureTaken(byte[] data, Camera camera) 
        {
               Intent i = new Intent(Hackbook.this, view.class);
                   i.putExtra("photo", data);
                   Log.d(TAG, "jpegCallback1" +data);
                  startActivity(i); 
        }
    };
12-14 17:58:33.756: DEBUG/camera(630): jpegCallback1[B@44f90d60
12-14 17:58:33.785: INFO/ActivityManager(58): Starting activity: Intent { cmp=com.facebook.android/.view (has extras) }
12-14 17:58:33.985: INFO/Camera(630): jpegCallback2[B@44f385e0
12-14 17:58:34.605: INFO/ActivityManager(58): Displayed activity com.facebook.android/.view: 730 ms (total 730 ms)
12-14 18:00:56.351: DEBUG/SntpClient(58): request time failed: java.net.SocketException: Address family not supported by protocol
第二个activity view.java是

setContentView(R.layout.view);
        Bundle extras = getIntent().getExtras();
        byte[] photo = extras.getByteArray("photo");
        Log.i(TAG, "jpegCallback2" + photo);
        Bitmap bitmap  = BitmapFactory.decodeByteArray (photo, 0, photo.length);
        ImageView imgView = (ImageView)findViewById(R.id.photoResultView);
        imgView.setImageBitmap(bitmap); 
当我在emulator中运行这个程序时,我得到了一个内置在emulator中的映像。但是当我尝试在我的设备上运行此操作时,第二个活动中没有显示图像。Logcat如下所示:

 PictureCallback jpegCallback = new PictureCallback() 
    {
        public void onPictureTaken(byte[] data, Camera camera) 
        {
               Intent i = new Intent(Hackbook.this, view.class);
                   i.putExtra("photo", data);
                   Log.d(TAG, "jpegCallback1" +data);
                  startActivity(i); 
        }
    };
12-14 17:58:33.756: DEBUG/camera(630): jpegCallback1[B@44f90d60
12-14 17:58:33.785: INFO/ActivityManager(58): Starting activity: Intent { cmp=com.facebook.android/.view (has extras) }
12-14 17:58:33.985: INFO/Camera(630): jpegCallback2[B@44f385e0
12-14 17:58:34.605: INFO/ActivityManager(58): Displayed activity com.facebook.android/.view: 730 ms (total 730 ms)
12-14 18:00:56.351: DEBUG/SntpClient(58): request time failed: java.net.SocketException: Address family not supported by protocol
如果有人知道这件事,请帮助我

possible duplicate answer
尝试使用意图对象以这种方式传递位图对象

Intent i = new Intent(Hackbook.this, view.class);
Bitmap bitmap  = BitmapFactory.decodeByteArray (data, 0, photo.length);
i.putExtra("BitmapImage", bitmap);
startActivity(i);
这样做可以节省时间

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");

请看这篇文章

您可以简单地将位图命名为static first

 public static Bitmap bitmap;
然后在第一个活动中创建这样的方法

public static Bitmap getBitmap(){
   return bitmap;
}
并在其他活动中需要的地方调用该函数

bitmap_requiredclassname.getBitmap();

使其成为静态并在第二个活动中访问同意nik博士的意见,这是最好的实现方法,而不是传递额外的。嗨@Dr.nik,我不知道如何使字节数据成为静态的。你能解释一下吗?@Binu谷歌是你的朋友,请问他。。如果你有任何问题,那就去问我,我想这可能是一个评论。