android.view.InflateException: on writing a custom imageView -
i have custom imageview class below
public class myimageview extends imageview { public myimageview(context context) { super(context); // todo auto-generated constructor stub } @override protected void ondraw(canvas canvas) { // todo auto-generated method stub paint p = new paint(paint.anti_alias_flag); canvas.drawline(0, 0, 20, 20, p); super.ondraw(canvas); } }
and inside activity class oncreate methode defined as
myimageview imageview; // works perfect when use imageview instead of myimageview @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); imageview=(myimageview)findviewbyid(r.id.image); bitmap dbitmap = bitmapfactory.decoderesource(getresources(), r.drawable.dinkan); bitmap bitmap = dbitmap.copy(bitmap.config.argb_8888, true); canvas canvas = new canvas(bitmap); paint paint = new paint(); paint.setcolor(color.black); imageview.setimagebitmap(bitmap); }
it ends runtimeexception caused inflateexception. error log shown below
java.lang.runtimeexception: unable start activity componentinfo{com.example.hari.myapplication/com.example.hari.myapplication.mainactivity}: android.view.inflateexception: binary xml file line #26: error inflating class com.example.hari.myapplication.myimageview @ android.app.activitythread.performlaunchactivity(activitythread.java:2338) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2390) @ android.app.activitythread.access$800(activitythread.java:151) @ android.app.activitythread$h.handlemessage(activitythread.java:1321) @ android.os.handler.dispatchmessage(handler.java:110) @ android.os.looper.loop(looper.java:193) @ android.app.activitythread.main(activitythread.java:5299) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:829) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:645) @ dalvik.system.nativestart.main(native method) caused by: android.view.inflateexception: binary xml file line #26: error inflating class com.example.hari.myapplication.myimageview @ android.view.layoutinflater.createview(layoutinflater.java:603) @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:696) @ android.view.layoutinflater.rinflate(layoutinflater.java:755) @ android.view.layoutinflater.inflate(layoutinflater.java:492) @ android.view.layoutinflater.inflate(layoutinflater.java:397) @ android.view.layoutinflater.inflate(layoutinflater.java:353) @ android.support.v7.app.appcompatdelegateimplv7.setcontentview(appcompatdelegateimplv7.java:256) @ android.support.v7.app.appcompatactivity.setcontentview(appcompatactivity.java:109) @ com.example.hari.myapplication.mainactivity.oncreate(mainactivity.java:29) @ android.app.activity.performcreate(activity.java:5264) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1088) @ android.app.activitythread.performlaunchactivity(activitythread.java:2302) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2390) @ android.app.activitythread.access$800(activitythread.java:151) @ android.app.activitythread$h.handlemessage(activitythread.java:1321) @ android.os.handler.dispatchmessage(handler.java:110) @ android.os.looper.loop(looper.java:193) @ android.app.activitythread.main(activitythread.java:5299) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:829) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:645) @ dalvik.system.nativestart.main(native method) caused by: java.lang.nosuchmethodexception: <init> [class android.content.context, interface android.util.attributeset] @ java.lang.class.getconstructorormethod(class.java:472) @ java.lang.class.getconstructor(class.java:446) @ android.view.layoutinflater.createview(layoutinflater.java:568) @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:696) @ android.view.layoutinflater.rinflate(layoutinflater.java:755) @ android.view.layoutinflater.inflate(layoutinflater.java:492) @ android.view.layoutinflater.inflate(layoutinflater.java:397) @ android.view.layoutinflater.inflate(layoutinflater.java:353) @ android.support.v7.app.appcompatdelegateimplv7.setcontentview(appcompatdelegateimplv7.java:256) @ android.support.v7.app.appcompatactivity.setcontentview(appcompatactivity.java:109) @ com.example.hari.myapplication.mainactivity.oncreate(mainactivity.java:29) @ android.app.activity.performcreate(activity.java:5264) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1088) @ android.app.activitythread.performlaunchactivity(activitythread.java:2302) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2390) @ android.app.activitythread.access$800(activitythread.java:151) @ android.app.activitythread$h.handlemessage(activitythread.java:1321) @ android.os.handler.dispatchmessage(handler.java:110) @ android.os.looper.loop(looper.java:193) @ android.app.activitythread.main(activitythread.java:5299) @ java.lang.reflect.method.invokenative(native method
but works perfect when use imageview instead of custom imageview(myimageview). wrong code? appreciated.
when inflating custom view xml, must have correct constructors. try adding these constructors 1 have
public myimageview(context context, attributeset attrs) { super(context, attrs); } public myimageview(context context, attributeset attrs, int defstyle) { super(context, attrs, defstyle); }
Comments
Post a Comment