0

Created custom view and drawn different shapes on it,when i tries to place this customview in layout shapes on customview are overlapped with remaining screen and some times app crashing with null pointer exception. exception caused bcz of boundaries to drawable but i didn't get how to fix pls check my code

public void customDraw(Canvas canvas) {
        canvas.save();
        float dx = (maxX + minX) / 2;
        float dy = (maxY + minY) / 2;
        drawable.setBounds((int) minX, (int) minY, (int) maxX, (int) maxY);
        //drawable.setBounds(50, 50, 50, 50);
        canvas.translate(dx, dy);
        canvas.rotate(angle * 180.0f / (float) Math.PI);
        canvas.translate(-dx, -dy);
        drawable.draw(canvas);
        canvas.restore();
    }

here i'm attaching my customview total class custonView file

here is stacktrace

    10-09 11:38:19.142: E/AndroidRuntime(3673): FATAL EXCEPTION: main
10-09 11:38:19.142: E/AndroidRuntime(3673): java.lang.NullPointerException
10-09 11:38:19.142: E/AndroidRuntime(3673):     at org.metalev.multitouch.photosortr.PhotoSortrView$Img.draw(PhotoSortrView.java:316)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at org.metalev.multitouch.photosortr.PhotoSortrView.onDraw(PhotoSortrView.java:124)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.View.draw(View.java:13707)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.View.draw(View.java:13591)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewGroup.drawChild(ViewGroup.java:2928)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.View.draw(View.java:13589)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewGroup.drawChild(ViewGroup.java:2928)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.View.draw(View.java:13589)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewGroup.drawChild(ViewGroup.java:2928)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.View.draw(View.java:13589)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewGroup.drawChild(ViewGroup.java:2928)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.View.draw(View.java:13710)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.widget.FrameLayout.draw(FrameLayout.java:467)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2211)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2281)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewRootImpl.draw(ViewRootImpl.java:2177)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2045)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1854)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.Choreographer.doCallbacks(Choreographer.java:562)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.Choreographer.doFrame(Choreographer.java:532)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.os.Handler.handleCallback(Handler.java:725)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.os.Looper.loop(Looper.java:137)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at android.app.ActivityThread.main(ActivityThread.java:5039)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at java.lang.reflect.Method.invokeNative(Native Method)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at java.lang.reflect.Method.invoke(Method.java:511)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
10-09 11:38:19.142: E/AndroidRuntime(3673):     at dalvik.system.NativeStart.main(Native Method)
Prabha1
  • 233
  • 1
  • 4
  • 22
  • what´s in that line?? `PhotoSortrView.java:316` – eduyayo Oct 09 '14 at 08:34
  • That is my customview java file ,in above mentioned pastebin link added code – Prabha1 Oct 09 '14 at 08:47
  • I see no references to `loadImages`, the drawable gets there null – eduyayo Oct 09 '14 at 09:02
  • public void loadImages(Context context) { Resources res = context.getResources(); int n = mImages.size(); for (int i = 0; i < n; i++) mImages.get(i).load(res); } – Prabha1 Oct 09 '14 at 09:06
  • put an `if` before accessing the drawable or wait for the view to be fully setup like these guys http://stackoverflow.com/questions/7733813/how-can-you-tell-when-a-layout-has-been-drawn – eduyayo Oct 09 '14 at 09:09
  • ViewTreeObserver is for views and layouts ,not able to implement this for shapes on views. – Prabha1 Oct 09 '14 at 09:19
  • Add an IF, then, before accessing the shape or whatever. The context (activity or whatever) is trying to draw your view before everything is loaded. – eduyayo Oct 09 '14 at 09:53
  • COuld you check java file once and suggest me how to place all shapes at same point on screen. – Prabha1 Oct 09 '14 at 10:27

0 Answers0