android - I get java.lang.NullPointerException when onBackPressed in Activity have a MapFragment -


i have activity display googlemap custom fragment. every thing display correctly, when click on button activity, there android error alert message , 'java.lang.runtimeexception: unable destroy activity (...myactivity}: java.lang.nullpointerexception'. logcat no point anywhere in code, can't find root of problem.

here logcat:

06-04 06:41:04.206  30479-30479/xxx e/androidruntime﹕ fatal exception: main java.lang.runtimeexception: unable destroy activity {xxx.infoactivity}: java.lang.nullpointerexception         @ android.app.activitythread.performdestroyactivity(activitythread.java:3624)         @ android.app.activitythread.handledestroyactivity(activitythread.java:3642)         @ android.app.activitythread.access$1200(activitythread.java:156)         @ android.app.activitythread$h.handlemessage(activitythread.java:1393)         @ android.os.handler.dispatchmessage(handler.java:99)         @ android.os.looper.loop(looper.java:153)         @ android.app.activitythread.main(activitythread.java:5299)         @ java.lang.reflect.method.invokenative(native method)         @ java.lang.reflect.method.invoke(method.java:511)         @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:833)         @ com.android.internal.os.zygoteinit.main(zygoteinit.java:600)         @ dalvik.system.nativestart.main(native method)  caused by: java.lang.nullpointerexception         @ com.google.maps.api.android.lib6.d.ai.d(unknown source)         @ com.google.android.gms.maps.internal.x.ontransact(sourcefile:129)         @ android.os.binder.transact(binder.java:310)         @ com.google.android.gms.maps.internal.imapfragmentdelegate$zza$zza.ondestroyview(unknown source)         @ com.google.android.gms.maps.mapfragment$zza.ondestroyview(unknown source)         @ com.google.android.gms.dynamic.zza.ondestroyview(unknown source)         @ com.google.android.gms.maps.mapfragment.ondestroyview(unknown source)         @ android.app.fragment.performdestroyview(fragment.java:1893)         @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:949)         @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1057)         @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1039)         @ android.app.fragmentmanagerimpl.dispatchdestroy(fragmentmanager.java:1868)         @ android.app.activity.performdestroy(activity.java:5290)         @ android.app.instrumentation.callactivityondestroy(instrumentation.java:1112)         @ android.app.activitythread.performdestroyactivity(activitythread.java:3611) 

here activity code:

public class infoactivity extends appcompatactivity {  toolbar actionbartoolbar;  citymapfragment citymapfragment;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_news_info);     actionbartoolbar = (toolbar)findviewbyid(r.id.event_info_toolbar);     setsupportactionbar(actionbartoolbar);     actionbartoolbar.setnavigationicon(r.mipmap.ic_action_direction);     actionbartoolbar.setnavigationonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {          }     });      fragmentmanager fm = getfragmentmanager();     fragmenttransaction ft = fm.begintransaction();     citymapfragment = citymapfragment.getnewinstance(savedinstancestate);     ft.add(r.id.layoutmapevent, citymapfragment);     ft.commit(); }  @override public void onbackpressed() {     super.onbackpressed();     }  @override protected void onpause() {     super.onpause();     citymapfragment.onpause();     }  @override protected void onstop() {     super.onstop();    citymapfragment.onstop();     }   @override protected void onresume() {     super.onresume();     citymapfragment.onresume();     }  @override protected void ondestroy() {     super.ondestroy();     citymapfragment.ondestroy();     } } 

here citymapfragment code:

public class citymapfragment extends fragment implements onmapreadycallback{

public static citymapfragment getnewinstance(bundle savedinstancestate) {     citymapfragment citymapfragment = new citymapfragment();     citymapfragment.oncreate(savedinstancestate);     return citymapfragment; }  public googlemap googlemap; public mapfragment mapfragment; @override public view oncreateview(layoutinflater inflater, viewgroup container,         bundle savedinstancestate) {     view v = inflater.inflate(r.layout.map_fragment_layout, container, false);     mapinit(savedinstancestate);     return v; }  @override public void onmapready(googlemap _googlemap) {     this.googlemap = _googlemap;     googlemap.setmylocationenabled(true);     googlemap.getuisettings().setmylocationbuttonenabled(true);     googlemap.setonmapclicklistener(new googlemap.onmapclicklistener() {         @override         public void onmapclick(latlng latlng) {             toast.maketext(getactivity(), "tap", toast.length_short).show();         }     }); }  private void mapinit(bundle savedinstancestate) {     if(googlemap == null)     {         switch (googleplayservicesutil.isgoogleplayservicesavailable(getactivity()))         {             case connectionresult.success:                 mapsinitializer.initialize(getactivity());                 mapfragment = (mapfragment)getfragmentmanager().findfragmentbyid(r.id.mapfragmentid);                 mapfragment.oncreate(savedinstancestate);                 if(mapfragment != null)                 {                     mapfragment.getmapasync(this);                 }                  toast.maketext(getactivity(), "succes", toast.length_short).show();                 break;             case connectionresult.service_missing:                 toast.maketext(getactivity(), "service missing", toast.length_short).show();                 break;             case connectionresult.service_version_update_required:                 toast.maketext(getactivity(), "update required", toast.length_short).show();                 break;             default:                 toast.maketext(getactivity(), googleplayservicesutil.isgoogleplayservicesavailable(getactivity()), toast.length_short).show();         }     }     /*if(googlemap != null)     {         mapsetting();     }*/ }  public void setmarkerandfocus(latlng latlg, string text) {     googlemap.addmarker(new markeroptions().position(latlg).title(text));     focuslocation(latlg); }  public void setmarker(latlng latlg, string text) { }  public void focuslocation(latlng latlg) {     cameraupdate cameraupdate = cameraupdatefactory.newlatlngzoom(latlg, 15);     googlemap.animatecamera(cameraupdate); } @override public void onresume() {     super.onresume();     mapfragment.onresume(); }  @override public void onpause() {     super.onpause();     mapfragment.onpause(); }  @override public void onstop() {     super.onstop();     mapfragment.onstop(); }  @override public void onlowmemory() {     super.onlowmemory();     mapfragment.onlowmemory(); }  @override public void ondestroyview() {     super.ondestroyview(); }  @override public void ondestroy() {     super.ondestroy();     mapfragment.ondestroy();     } } 

            think problem in

ft.add(r.id.layoutmapevent, citymapfragment); ft.commit(); 

because when remove code, there no java.lang.nullpointerexception throw. want display map on activity, can't remove activity. take me 2 days, can't resolve correctly.

thank anyhelp!!!!

try removing ondestroyview() method citymapfragment. when activity destroyed, fragment automatically destroyed too. hence,there's no need it.


Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -