Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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 java.lang.IllegalStateException:Can';t包裹发生回收位图错误_Android - Fatal编程技术网

Android java.lang.IllegalStateException:Can';t包裹发生回收位图错误

Android java.lang.IllegalStateException:Can';t包裹发生回收位图错误,android,Android,我正在尝试使用以下代码来获取图像的位图,这是从相机拍摄的。 我之所以使用这个概念,是因为我将图像作为水印添加到拍摄的图片中。所以我只将活动作为位图绘制 在执行此操作时,我遇到以下错误(无法打包回收的位图错误) 我想将此位图发送到其他活动 如何检查我是否获得图像 else if(v.equals(findViewById(R.id.ok_button))){ topbar.setVisibility(View.GONE); men

我正在尝试使用以下代码来获取图像的位图,这是从相机拍摄的。 我之所以使用这个概念,是因为我将图像作为水印添加到拍摄的图片中。所以我只将活动作为位图绘制

在执行此操作时,我遇到以下错误(无法打包回收的位图错误)

我想将此位图发送到其他活动

如何检查我是否获得图像

else if(v.equals(findViewById(R.id.ok_button))){


                topbar.setVisibility(View.GONE);
                menubar.setVisibility(View.GONE);
                bottom.setVisibility(View.GONE);

                View s = ml.getRootView();
                s.setDrawingCacheEnabled(true);

                b = s.getDrawingCache();
                Log.e("ok","ok");
                Intent i=new Intent(CameraActivity.this,Update.class);
                 i.putExtra("data",b);
                 startActivity(i);
      //           s.setDrawingCacheEnabled(false);
        //         s.setVisibility(View.GONE);
                 finish();
谢谢你

有点晚了,但我最近遇到了一个类似的问题,其他人可能会发现你的问题,所以最好有答案

首先,确保在调用
getDrawingCache
方法时获得所需的图像。如果您没有获得图像,请查看可能的原因

其次,确保图像不会被回收。情况可能并非如此,因为会抛出一个
非法状态异常
,表示无法打包回收的位图,并且应用程序会崩溃。如果您的图像确实被回收,只需制作一份副本,并将副本放入
捆绑包中即可。作为旁注,调用
setDrawingCacheEnabled(false)
将调用
recycle()

第三点(也是最后一点),确保图像能够传递给其他活动。反序列化错误字段或错误变量等错误非常常见

如果以上所有操作都进行得很顺利,并且发生这种情况的原因在上面的代码中,那么不应该只显示一个黑屏。如果仍然出现黑屏,则最有可能的错误出现在
Update
活动中,而不是发送图像的活动中

编辑:误读问题

您可能会遇到异常,因为在触发意图后,映像可能(无法确认)被序列化。如果是这种情况,只需将
位图
的副本放在
意图
上,而不是像这样放置
位图
本身:

i.putExtra("data",b.copy(b.getConfig(), b);

帮助我认识到。

您的位图在打包之前会被回收。检查bitmap.isRecycled()如何解决此问题?它不会被回收,但不会带我去其他活动,只是出现了黑屏