Android 将重叠图像保存到SD卡

Android 将重叠图像保存到SD卡,android,image,save,overlay,sd-card,Android,Image,Save,Overlay,Sd Card,我想保存已设置背景的框架布局,并在其顶部放置另一个图像。 当我使用onclick按钮时,它会给出“强制关闭错误” 我正在使用以下代码: FrameLayout mainLayout = (FrameLayout) findViewById(R.id.imageView); File root = Environment.getExternalStorageDirectory(); File file = new File(root,"androidlife.jpg"); Bitmap b

我想保存已设置背景的框架布局,并在其顶部放置另一个图像。
当我使用onclick按钮时,它会给出“强制关闭错误”

我正在使用以下代码:

 FrameLayout mainLayout = (FrameLayout) findViewById(R.id.imageView);
 File root = Environment.getExternalStorageDirectory();
 File file = new File(root,"androidlife.jpg");
 Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(), mainLayout.getHeight(), Bitmap.Config.ARGB_8888);
 Canvas c = new Canvas(b);
 mainLayout.draw(c);
 FileOutputStream fos = null;
 try {
    fos = new FileOutputStream(file);

    if (fos != null) {
       b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
       fos.close();
    }
 } catch (Exception e) {
    e.printStackTrace();
 }
以下是错误日志:

05-03 00:39:37.281: W/dalvikvm(445): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
05-03 00:39:37.301: E/AndroidRuntime(445): FATAL EXCEPTION: main
05-03 00:39:37.301: E/AndroidRuntime(445): java.lang.ClassCastException: android.widget.ImageView
05-03 00:39:37.301: E/AndroidRuntime(445):  at org.example.touch.Touch$1.onClick(Touch.java:60)
05-03 00:39:37.301: E/AndroidRuntime(445):  at android.view.View.performClick(View.java:2408)
05-03 00:39:37.301: E/AndroidRuntime(445):  at android.view.View$PerformClick.run(View.java:8816)
05-03 00:39:37.301: E/AndroidRuntime(445):  at android.os.Handler.handleCallback(Handler.java:587)
05-03 00:39:37.301: E/AndroidRuntime(445):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-03 00:39:37.301: E/AndroidRuntime(445):  at android.os.Looper.loop(Looper.java:123)
05-03 00:39:37.301: E/AndroidRuntime(445):  at android.app.ActivityThread.main(ActivityThread.java:4627)
05-03 00:39:37.301: E/AndroidRuntime(445):  at java.lang.reflect.Method.invokeNative(Native Method)
05-03 00:39:37.301: E/AndroidRuntime(445):  at java.lang.reflect.Method.invoke(Method.java:521)
05-03 00:39:37.301: E/AndroidRuntime(445):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 00:39:37.301: E/AndroidRuntime(445):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 00:39:37.301: E/AndroidRuntime(445):  at dalvik.system.NativeStart.main(Native Method)

问题是您正在这样做:

FrameLayout mainLayout = (FrameLayout) findViewById(R.id.imageView);
R.id.imageView很可能是对
imageView
的引用。你最好这样做:

ImageView mainLayout = (ImageView) findViewById(R.id.imageView);

我自己解决了这个问题。。。。这是错误的引用…我更改为FrameLayout mainLayout=(FrameLayout)findViewById(R.id.frame);因为我对xml文件使用FrameLayout..所以它不能更改为ImageView..总之感谢所有