2012-09-13 2 views
0

선형 레이아웃을 이미지로 변환하고 싶습니다. 다음 코드를 사용하고 있지만 nullpointerexception이 발생합니다.이 문제를 해결하는 방법을 알려주십시오. 코드입니다.선형 레이아웃을 이미지로 변환하는 중 예외가 발생합니다

public class AndroidWebImage extends Activity { 

ImageView bmImage; 
LinearLayout view; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     view = (LinearLayout)findViewById(R.id.screen); 
     bmImage = (ImageView)findViewById(R.id.image); 

     view.setDrawingCacheEnabled(true); 
     // this is the important code :) 
     // Without it the view will have a dimension of 0,0 and the bitmap will be null   

     view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
      MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 

     view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); 

     view.buildDrawingCache(true); 
     Bitmap b = Bitmap.createBitmap(view.getDrawingCache()); 
     view.setDrawingCacheEnabled(false); // clear drawing cache 

     bmImage.setImageBitmap(b); 

}; 
} 

나는이 라인에서 예외를 얻고있다 :

09-13 12:19:26.061: W/dalvikvm(551): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
09-13 12:19:26.112: E/AndroidRuntime(551): Uncaught handler: thread main exiting due to uncaught exception 
09-13 12:19:26.593: E/AndroidRuntime(551): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.velosys.interview_preparation/com.velosys.interview_preparation.activities.Certificate}: java.lang.NullPointerException 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.os.Looper.loop(Looper.java:123) 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.app.ActivityThread.main(ActivityThread.java:4363) 
09-13 12:19:26.593: E/AndroidRuntime(551): at java.lang.reflect.Method.invokeNative(Native Method) 
09-13 12:19:26.593: E/AndroidRuntime(551): at java.lang.reflect.Method.invoke(Method.java:521) 
09-13 12:19:26.593: E/AndroidRuntime(551): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
09-13 12:19:26.593: E/AndroidRuntime(551): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
09-13 12:19:26.593: E/AndroidRuntime(551): at dalvik.system.NativeStart.main(Native Method) 
09-13 12:19:26.593: E/AndroidRuntime(551): Caused by: java.lang.NullPointerException 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.graphics.Bitmap.createBitmap(Bitmap.java:358) 
09-13 12:19:26.593: E/AndroidRuntime(551): at com.velosys.interview_preparation.activities.Certificate.onCreate(Certificate.java:76) 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
09-13 12:19:26.593: E/AndroidRuntime(551): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
09-13 12:19:26.593: E/AndroidRuntime(551): ... 11 more 
09-13 12:19:26.661: I/dalvikvm(551): threadid=7: reacting to signal 3 
09-13 12:19:26.661: E/dalvikvm(551): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
,536 :

Bitmap b = Bitmap.createBitmap(view.getDrawingCache()); 

이 오류 로그입니다

미리 감사드립니다.

+0

로그를 게시 할 수 있습니까? – Flo

+0

선생님도 로그를 붙여 넣었습니다. – user1662334

답변

0

드로잉 캐시가 getDrawingCache()에 대해 null을 반환하는 것 같지 않습니다.

아마도 캐시를 사용하지 않고이 방법을 시도해 볼 수 있습니다.

Bitmap bitmap = Bitmap.createBitmap(view.getLayoutParams().width, view.getLayoutParams().height, Bitmap.Config.ARGB_8888);     
Canvas canvas = new Canvas(bitmap); 
view.layout(0, 0, view.getLayoutParams().width, view.getLayoutParams().height); 
view.draw(canvas); 
+0

죄송합니다. 문제가 해결되지 않았습니다. – user1662334

관련 문제