Saturday 15 September 2012

java - Call inner asynctask from parent fragment -



java - Call inner asynctask from parent fragment -

i want phone call inner asynctask located in fragment. want phone call asynctask parent fragment hosting fragment asynctask. parent fragment includes viewpager multiple fragments. know have utilize interface , tried doesn't work.

interface

public interface onfragmentbuttonlistener { void onmybuttonclicked(); }

fragment

public class fragmentqueue extends sherlockfragment implements onfragmentbuttonlistener { ... @override public void onmybuttonclicked() { new loadqueuetask().execute(); } }

parent fragment

public class parentfragment extends sherlockfragment{ ... refresh.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { ((onfragmentbuttonlistener)getactivity()).onmybuttonclicked(); } }); }

error

11-12 23:15:14.115: e/androidruntime(31864): java.lang.classcastexception: nl.name.projectname.projectname cannot cast nl.name.projectname.onfragmentbuttonlistener 11-12 23:15:14.115: e/androidruntime(31864): @ nl.name.projectname.fragments.parentfragment$loadinfotask$1.onclick(parentfragment.java:323) 11-12 23:15:14.115: e/androidruntime(31864): @ android.view.view.performclick(view.java:4445) 11-12 23:15:14.115: e/androidruntime(31864): @ android.view.view$performclick.run(view.java:18446) 11-12 23:15:14.115: e/androidruntime(31864): @ android.os.handler.handlecallback(handler.java:733) 11-12 23:15:14.115: e/androidruntime(31864): @ android.os.handler.dispatchmessage(handler.java:95) 11-12 23:15:14.115: e/androidruntime(31864): @ android.os.looper.loop(looper.java:136) 11-12 23:15:14.115: e/androidruntime(31864): @ android.app.activitythread.main(activitythread.java:5146) 11-12 23:15:14.115: e/androidruntime(31864): @ java.lang.reflect.method.invokenative(native method) 11-12 23:15:14.115: e/androidruntime(31864): @ java.lang.reflect.method.invoke(method.java:515) 11-12 23:15:14.115: e/androidruntime(31864): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:796) 11-12 23:15:14.115: e/androidruntime(31864): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:612) 11-12 23:15:14.115: e/androidruntime(31864): @ dalvik.system.nativestart.main(native method)

it looks trying phone call onmybuttonclicked on parent activity, rather kid fragmentqueue instance. in onclick method, need reference fragmentqueue instance, , phone call onmybuttonclicked. this:

refresh.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { fragment fragment = getfragmentmanager().findfragmentbytag("fragmentqueue"); if (fragment instanceof fragmentqueue) { ((fragmentqueue)fragment).onmybuttonclicked(); } } });

note work, have set fragment tag "fragmentqueue" when build fragment (either in xml or code).

java android android-fragments interface android-asynctask

No comments:

Post a Comment