android - Calling method of Fragment from MainActivity using interface, NullPointerException -


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