2012-05-02 4 views
0

배경을 설정하고 다른 이미지가 맨 위에 배치 된 프레임 레이아웃을 저장하고 싶습니다.
onclick 버튼을 사용하면 '강제 종료 오류'가 나타납니다. 오류 로그를 다음layed 이미지를 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(); 
} 

됩니다 :

나는 다음과 같은 코드를 사용하고

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

그리고 R. :

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

문제는이 일을하는 것입니다 id.imageView는 대체로 ImageView에 대한 참조입니다. 같은 당신은 더 나은 뭔가를 할 : 내가 문제를 스스로 해결

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

.... 그것은 .... 내가 FrameLayout이 mainLayout = (FrameLayout이) findViewById를 (R.id.frame)에 잘못된 refernce를 변경했다; 내 xml 파일에 FrameLayout을 사용하기 때문에 ** ImageView **로 변경 될 수 없습니다. – Numair

관련 문제