Why am I keep getting a java.lang.nullpointerexception in Android Studio? -


so trying pass text in 1 fragment main activity, , have main activity pass fragment can displayed.

here code of fragment send main activity:

public class topfragment extends fragment{   private static edittext topinput;   private static edittext bottominput;    fragmentinterface communicate;    public interface fragmentinterface{     public void sendtheinput(string toptext,string bottomtext);   }    @nullable   @override   public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {     view view = inflater.inflate(r.layout.top_fragment,container,false);      topinput = (edittext) view.findviewbyid(r.id.topinput);     bottominput = (edittext) view.findviewbyid(r.id.bottominput);     final button submitbutton = (button)view.findviewbyid(r.id.submitbutton);      submitbutton.setonclicklistener(             new view.onclicklistener(){                 public void onclick(view v){                     buttonclicked(v);                 }         }     );     return view;   }    public void buttonclicked(view view){    communicate.sendtheinput(topinput.gettext().tostring(),bottominput.gettext().tostring());   } } 

here bit of code in main activity:

@override public void sendtheinput(string toptext, string bottomtext) {   bottomfragment bottomfrag = (bottomfragment)getsupportfragmentmanager().findfragmentbyid(r.id.bottomfragment);         bottomfrag.setboxtext(toptext,bottomtext); } 

and here code of fragment display text:

public class bottomfragment extends fragment{    private static edittext toptextbox;   private static edittext bottomtextbox;    @nullable   @override   public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {     view view = inflater.inflate(r.layout.bottom_fragment,container,false);     return view;   }    public void setboxtext(string toptext, string bottomtext){      toptextbox.settext(toptext);     bottomtextbox.settext(bottomtext);   } } 

when run app have no runtime errors when click button in me emulator this:

08-07 13:20:48.125    4011-4011/com.example.vanessaanthony.fragmentreview e/androidruntime﹕ fatal exception: main     process: com.example.vanessaanthony.fragmentreview, pid: 4011     java.lang.nullpointerexception: attempt invoke interface method 'void com.example.vanessaanthony.fragmentreview.topfragment$fragmentinterface.sendtheinput(java.lang.string, java.lang.string)' on null object reference             @ com.example.vanessaanthony.fragmentreview.topfragment.buttonclicked(topfragment.java:44)             @ com.example.vanessaanthony.fragmentreview.topfragment$1.onclick(topfragment.java:35)             @ android.view.view.performclick(view.java:4780)             @ android.view.view$performclick.run(view.java:19866)             @ android.os.handler.handlecallback(handler.java:739)             @ android.os.handler.dispatchmessage(handler.java:95)             @ android.os.looper.loop(looper.java:135)             @ android.app.activitythread.main(activitythread.java:5257)             @ java.lang.reflect.method.invoke(native method)             @ java.lang.reflect.method.invoke(method.java:372)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java:698) 

why getting error message?

you forgot set communicate in fragment. i'd recommend doing in onattach

public class topfragment extends fragment {     private static edittext topinput;     private static edittext bottominput;      fragmentinterface communicate;      public interface fragmentinterface{         public void sendtheinput(string toptext,string bottomtext);     }      @nullable     @override     public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {         view view = inflater.inflate(r.layout.top_fragment,container,false);          topinput = (edittext) view.findviewbyid(r.id.topinput);         bottominput = (edittext) view.findviewbyid(r.id.bottominput);         final button submitbutton = (button)view.findviewbyid(r.id.submitbutton);          submitbutton.setonclicklistener(                 new view.onclicklistener(){                     public void onclick(view v){                         buttonclicked(v);                     }             }         );         return view;     }      public void onattach(activity activity)     {         super.onattach(activity);         communicate = (fragmentinterface) activity;     }      public void buttonclicked(view view){          communicate.sendtheinput(topinput.gettext().tostring(),bottominput.gettext().tostring());      }    } 

make sure activity implements fragmentinterface


Comments

Popular posts from this blog

yii2 - Yii 2 Running a Cron in the basic template -

asp.net - 'System.Web.HttpContext' does not contain a definition for 'GetOwinContext' Mystery -

c# - MSDN OneNote Api: Navigate to never before opened page without opening a OneNote Application Window -