i trying these steps(are given below) call fragment methods in activity without fragment id , tags. im getting nullpointerexception . important me work out... these right steps call fragment method activity? if yes , doing right?? if no , there better way call fragment method activity?? , mainactivty , fragmet given below... plz ,thanks
_steps_which_i_am_trying_to_do
1 step)first create interface
public interface myinterface { void myaction() ; }
your fragment must implement interface.
public myfragment extends fragment implements myinterface
2 step) in activity, define field of type myinterface :
private myinterface listener ; public void setlistener(myinterface listener) { this.listener = listener ; }
3 step)when creating fragment , adding :
setlistener(myfragment);
finally, when condtion happens want call fragment method, call:
listener.myaction() ; // call implementation in myfragment class
mainactivity.java
public class mainactivity extends appcompatactivity implements navigationview.onnavigationitemselectedlistener{ toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar); @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); private hell listener; claimfragment claimfragment; setlistener(claimfragment); viewpager = (viewpager) findviewbyid(r.id.viewpager); setupviewpager(viewpager); toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); viewpager.setonpagechangelistener(new viewpager.onpagechangelistener() { @override public void onpageselected(int position) { listener.willwork(); } @override public void onpagescrolled(int arg0, float arg1, int arg2) { } @override public void onpagescrollstatechanged(int arg0) { } }); } tablayout.setupwithviewpager(viewpager); //this interface in mainactivity public interface hell { void willwork(); } public void setlistener(hell listener) { this.listener = listener ; }
claimfragment.java
public class claimfragment extends fragment implements swiperefreshlayout.onrefreshlistener , mainactivity.hell { @override public void willwork() { toast.maketext(getcontext(), "this claimfrag", toast.length_short).show(); } }
my_log
04-06 18:31:23.104 20843-20843/? e/androidruntime: fatal exception: main 04-06 18:31:23.104 20843-20843/? e/androidruntime: process: earn.free., pid: 20843 04-06 18:31:23.104 20843-20843/? e/androidruntime: java.lang.nullpointerexception: attempt invoke interface method 'void earn.free.cashback.snapcash.mainactivity$hell.willwork()' on null object reference 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ earn.free.cashback.snapcash.mainactivity$2.onpageselected(mainactivity.java:152) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.v4.view.viewpager.dispatchonpageselected(viewpager.java:1856) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.v4.view.viewpager.scrolltoitem(viewpager.java:625) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.v4.view.viewpager.setcurrentiteminternal(viewpager.java:609) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.v4.view.viewpager.setcurrentiteminternal(viewpager.java:570) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.v4.view.viewpager.setcurrentitem(viewpager.java:551) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.design.widget.tablayout$viewpagerontabselectedlistener.ontabsele cted(tablayout.java:2008) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.design.widget.tablayout.selecttab(tablayout.java:1025) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.design.widget.tablayout.selecttab(tablayout.java:995) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.design.widget.tablayout$tab.select(tablayout.java:1272) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.support.design.widget.tablayout$tabview.performclick(tablayout.java:1377 ) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.view.view$performclick.run(view.java:19866) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.os.handler.handlecallback(handler.java:739) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.os.handler.dispatchmessage(handler.java:95) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.os.looper.loop(looper.java:135) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ android.app.activitythread.main(activitythread.java:5254) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ java.lang.reflect.method.invoke(native method) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ java.lang.reflect.method.invoke(method.java:372) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903) 04-06 18:31:23.104 20843-20843/? e/androidruntime: @ com.android.internal.os.zygoteinit.main(zygoteinit.java:698) 04-06 18:31:23.105 747-1255/? w/activitymanager: force finishing activity 1 earn.free.cashback.snapcash/.mainactivity
Comments
Post a Comment