animation - Exception while removing a view from a LinearLayout in Android -
im trying animate custom view before removing linearlayout container. keep getting nullpointerexception can't trace anywhere specific.
the exception happens when have added 2 views , remove first one.
my code is:
protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.form_alg); fadeinanimation = animationutils.loadanimation(getapplicationcontext(), r.anim.witness_fade_in); list = (linearlayout) this.findviewbyid(r.id.alg_list_getuigen); addwitness = (imagebutton) .findviewbyid(r.id.alg_getuige_toevoegen); addwitness.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { final view w = view.inflate(getapplicationcontext(), r.layout.form_getuige, null); imagebutton button = (imagebutton) w .findviewbyid(r.id.getuige_verwijderen); button.setonclicklistener(new android.view.view.onclicklistener() { @override public void onclick(view v) { log.d(tag, "deleteview"); animation fadeoutanimation = animationutils .loadanimation(getapplicationcontext(), r.anim.witness_fade_out); fadeoutanimation .setanimationlistener(new animationlistener() { @override public void onanimationend( animation animation) { list.removeview(w); list.invalidate(); } @override public void onanimationrepeat( animation animation) { } @override public void onanimationstart( animation animation) { } }); w.setvisibility(view.visible); w.startanimation(fadeoutanimation); w.setvisibility(view.invisible); } }); log.d(tag, "addview"); w.setvisibility(view.invisible); list.addview(w); w.startanimation(fadeinanimation); w.setvisibility(view.visible); list.invalidate(); } }); } here stacktrace:
07-03 03:17:30.335: warn/dalvikvm(343): threadid=1: thread exiting uncaught exception (group=0x40015560) 07-03 03:17:30.365: error/androidruntime(343): fatal exception: main 07-03 03:17:30.365: error/androidruntime(343): java.lang.nullpointerexception 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.dispatchdraw(viewgroup.java:1372) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.drawchild(viewgroup.java:1644) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.dispatchdraw(viewgroup.java:1373) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.view.draw(view.java:6986) 07-03 03:17:30.365: error/androidruntime(343): @ android.widget.framelayout.draw(framelayout.java:357) 07-03 03:17:30.365: error/androidruntime(343): @ android.widget.scrollview.draw(scrollview.java:1409) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.drawchild(viewgroup.java:1646) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.dispatchdraw(viewgroup.java:1373) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.drawchild(viewgroup.java:1644) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.dispatchdraw(viewgroup.java:1373) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.view.draw(view.java:6883) 07-03 03:17:30.365: error/androidruntime(343): @ android.widget.framelayout.draw(framelayout.java:357) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.drawchild(viewgroup.java:1646) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.dispatchdraw(viewgroup.java:1373) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.drawchild(viewgroup.java:1644) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewgroup.dispatchdraw(viewgroup.java:1373) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.view.draw(view.java:6883) 07-03 03:17:30.365: error/androidruntime(343): @ android.widget.framelayout.draw(framelayout.java:357) 07-03 03:17:30.365: error/androidruntime(343): @ com.android.internal.policy.impl.phonewindow$decorview.draw(phonewindow.java:1862) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewroot.draw(viewroot.java:1522) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewroot.performtraversals(viewroot.java:1258) 07-03 03:17:30.365: error/androidruntime(343): @ android.view.viewroot.handlemessage(viewroot.java:1859) 07-03 03:17:30.365: error/androidruntime(343): @ android.os.handler.dispatchmessage(handler.java:99) 07-03 03:17:30.365: error/androidruntime(343): @ android.os.looper.loop(looper.java:123) 07-03 03:17:30.365: error/androidruntime(343): @ android.app.activitythread.main(activitythread.java:3683) 07-03 03:17:30.365: error/androidruntime(343): @ java.lang.reflect.method.invokenative(native method) 07-03 03:17:30.365: error/androidruntime(343): @ java.lang.reflect.method.invoke(method.java:507) 07-03 03:17:30.365: error/androidruntime(343): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:839) 07-03 03:17:30.365: error/androidruntime(343): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:597) 07-03 03:17:30.365: error/androidruntime(343): @ dalvik.system.nativestart.main(native method)
i had same problem. have use handler execute code modifies ui (removeview() in case). add handler field , construct in oncreate() method. then, in onanimationend(), this:
fhandler.post(new runnable() { @override public void run() { list.removeview(w); list.invalidate(); } }
Comments
Post a Comment