2012-05-02 4 views
0

Я хочу сохранить макет кадра, в котором я установил фон, и другое изображение помещено на его верхнюю часть.
Когда я использую кнопку onclick, она дает мне «силовую ошибку закрытия».Сохраните изображение заложенного изображения на SDCard

Я использую следующий код:

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) 

ответ

1

Проблема заключается в том, что вы делаете это:

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

и Р. id.imageView, скорее всего, является ссылкой на ImageView. Лучше сделать что-то вроде:

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

я решил проблему сам .... это было неправильно Refernce .... я изменить к FrameLayout mainLayout = (FrameLayout) findViewById (R.id.frame); , потому что я использую FrameLayout для своих xml-файлов .. так что это не может быть изменено на ** ImageView ** .. все равно благодаря всем – Numair