下のようなコードで、canvas = surfaceHolder.lockCanvas();をしています。
surfaceholderは、nullではありません。しかし、cannvasがnullになってしまいます。
何故なのでしょうか?
java
1 public void drawFace(Rect rect1, int color) { 2 3 FaceLine faceline=new FaceLine(); 4 surfaceHolder =faceline.getSurfaceHolder(); 5 Paint paint = new Paint(); 6 7 if(surfaceHolder!=null){ 8 Log.e(TAG,"surfaceHolderはnullじゃない"); 9 } 10 11 try { 12 13 if (mSurfaceView != null) { 14 Log.e(TAG, "surfaceViewはnullじゃない"); 15 } else if (mSurfaceView == null) { 16 Log.e(TAG, "surfaceViewはnull"); 17 } 18 19 //この、surfaceHolderの前に文字を入れる 20 canvass = mSurfaceView.surfaceHolder.lockCanvas(); 21 if(canvass==null) { 22 Log.e(TAG, "canvassはnullだった"); 23 }else if (canvass != null) { 24 Log.e(TAG,"canvassはnullじゃない"); 25 26 try { 27 //canvass.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 28 paint.setColor(color); 29 //paint.setARGB(128, 255, 0, 0); 30 Log.e(TAG,"drawFaceの処理の中"); 31 canvass.drawRect(rect1,paint); 32 33 34 } finally { 35 Log.e(TAG,"drawFaceが呼ばれてる、finally"); 36 mSurfaceView.surfaceHolder.unlockCanvasAndPost(canvass); 37 } 38 } 39 40 } catch (IllegalArgumentException e) { 41 Log.w(TAG, e.toString()); 42 } 43 } 44
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/19 03:54
2017/09/19 03:57
2017/09/19 05:37
2017/09/19 07:56
2017/09/20 11:10