Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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 - Fatal编程技术网

Android 无法打包回收的位图错误

Android 无法打包回收的位图错误,android,Android,我正在尝试向camera surfaceview添加图像,并尝试使用以下代码获取该图像 else if(v.equals(findViewById(R.id.ok_button))){ // saveImage(); topbar.setVisibility(View.GONE); menubar.setVisibility(View.GONE); bot

我正在尝试向camera surfaceview添加图像,并尝试使用以下代码获取该图像

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

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

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

                Bitmap b = s.getDrawingCache();


                Bitmap watermarkimage=b;
                s.setVisibility(View.GONE);
                Log.e("ok","ok");
                Intent i=new Intent(CameraActivity.this,Update.class);
                 i.putExtra("data",watermarkimage);
                 startActivity(i);
                 finish();
                 }
我保存了整个活动以获得图像。通过使用以下代码,我获得了位图

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

                Bitmap b = s.getDrawingCache();
当我试图将此位图发送到另一个活动时,我遇到了此错误

12-05 17:58:38.700: E/AndroidRuntime(10590): FATAL EXCEPTION: main
12-05 17:58:38.700: E/AndroidRuntime(10590): java.lang.IllegalStateException: Can't parcel a recycled bitmap
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.graphics.Bitmap.checkRecycled(Bitmap.java:210)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.graphics.Bitmap.writeToParcel(Bitmap.java:960)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.os.Parcel.writeParcelable(Parcel.java:1151)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.os.Parcel.writeValue(Parcel.java:1070)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.os.Parcel.writeMapInternal(Parcel.java:488)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.os.Bundle.writeToParcel(Bundle.java:1552)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.os.Parcel.writeBundle(Parcel.java:502)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.content.Intent.writeToParcel(Intent.java:5492)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1341)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1374)
12-05 17:58:38.700: E/AndroidRuntime(10590):    at android.app.Activity.startActivityForResult(Activity.java:2873)

尝试复制或克隆此位图并打包副本

Bitmap watermarkimage = b.copy(b.getConfig(), true);

我猜getDrawingCache返回的数据是与b和watermarkimage共享的。因此,setVisible to Gone可能导致它循环使用。

如果你正在这样做,你就不能在onCreate()中这样做,因为在onCreate()之后才绘制UI,如果我没有使s.setVisibility(View.Gone)起作用的话;即使我调用了INTENTC,此视图仍然存在。您是否可以根据simons注释确认您没有在onCreate()中执行此操作?是的,我没有在onCreate()中执行此操作,我正在onClickListener中执行此操作,它在onCreate()之外