android - Fragment with googlemaps: inflater.inflate crashes when destoried and recreated in ViewPager? -


i using actionbarsherlock , sherlockfragmentactivity.

i have 3 fragments , in tab + viewpager layout.

the 3rd fragment problem. fragment displays location on google maps.

from notice, viewpager, create new page, , if scroll away page more 1 page, destory page.

so fine first time around, go page 2, , calls create on page3 googlemaps.

however, problem if go page 1 (destories page 3 googlemaps). if go page 2 (tries create page3), page3's inflater.inflate die , i'll error, first choreographer class.

so question is, why inflater.inflate failing, , proper way program tab viewpager fragments this.???

code here (on create of main activity):

@override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         getwindow().setflags(layoutparams.flag_fullscreen, layoutparams.flag_fullscreen);         setcontentview(r.layout.main_activity);         mtabhost = (tabhost)findviewbyid(android.r.id.tabhost);         mtabhost.setup();          mviewpager = (viewpager)findviewbyid(r.id.pager);          mtabsadapter = new tabsadapter(this, mtabhost, mviewpager);          mtabsadapter.addtab(mtabhost.newtabspec("driverinfo").setindicator("driver info"),                 driverinfo.class, null);         mtabsadapter.addtab(mtabhost.newtabspec("alarmsystem").setindicator("alarm system"),                 alarmsetting.class, null);         mtabsadapter.addtab(mtabhost.newtabspec("vehiclelocation").setindicator("location"),                 vehiclelocation.class, null);           if (savedinstancestate != null) {             mtabhost.setcurrenttabbytag(savedinstancestate.getstring("tab"));         }     }      @override     protected void onsaveinstancestate(bundle outstate) {         super.onsaveinstancestate(outstate);         outstate.putstring("tab", mtabhost.getcurrenttabtag());     } 

code: location fragment:

public class vehiclelocation extends fragment implements serverrequestinterface {      private googlemap mmap;      private progressdialog mprogressdialog;      @override     public void oncreate(bundle savedinstancestate) {         try         {             super.oncreate(savedinstancestate);             setupprogressdialog();         }         catch (exception ex)         {             system.out.println(ex.tostring());         }   }          @override         public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { //where keeps die-ing     ----------------------------------         view view = inflater.inflate(r.layout.vehicle_location, container, false);             setupmapifneeded();             return view;         } 

error log:

05-13 20:48:31.532: e/androidruntime(13219): fatal exception: main 05-13 20:48:31.532: e/androidruntime(13219): android.view.inflateexception: binary xml file line #2: error inflating class fragment 05-13 20:48:31.532: e/androidruntime(13219):    @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:704) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.view.layoutinflater.inflate(layoutinflater.java:466) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.view.layoutinflater.inflate(layoutinflater.java:396) 05-13 20:48:31.532: e/androidruntime(13219):    @ com.covixon.main.vehiclelocation.oncreateview(vehiclelocation.java:37) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.app.fragment.performcreateview(fragment.java:1460) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:911) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1088) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.app.backstackrecord.run(backstackrecord.java:682) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1444) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.app.fragmentmanagerimpl.executependingtransactions(fragmentmanager.java:461) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.app.fragmentstatepageradapter.finishupdate(fragmentstatepageradapter.java:163) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.view.viewpager.populate(viewpager.java:1011) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.view.viewpager.populate(viewpager.java:880) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.view.viewpager$3.run(viewpager.java:238) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.view.choreographer$callbackrecord.run(choreographer.java:749) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.view.choreographer.docallbacks(choreographer.java:562) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.view.choreographer.doframe(choreographer.java:531) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:735) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.os.handler.handlecallback(handler.java:725) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.os.handler.dispatchmessage(handler.java:92) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.os.looper.loop(looper.java:137) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.app.activitythread.main(activitythread.java:5237) 05-13 20:48:31.532: e/androidruntime(13219):    @ java.lang.reflect.method.invokenative(native method) 05-13 20:48:31.532: e/androidruntime(13219):    @ java.lang.reflect.method.invoke(method.java:511) 05-13 20:48:31.532: e/androidruntime(13219):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:799) 05-13 20:48:31.532: e/androidruntime(13219):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:566) 05-13 20:48:31.532: e/androidruntime(13219):    @ dalvik.system.nativestart.main(native method) 05-13 20:48:31.532: e/androidruntime(13219): caused by: java.lang.illegalargumentexception: binary xml file line #2: duplicate id 0x7f040066, tag null, or parent id 0x0 fragment com.google.android.gms.maps.supportmapfragment 05-13 20:48:31.532: e/androidruntime(13219):    @ android.support.v4.app.fragmentactivity.oncreateview(fragmentactivity.java:285) 05-13 20:48:31.532: e/androidruntime(13219):    @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:676) 05-13 20:48:31.532: e/androidruntime(13219):    ... 26 more 

after staring @ stack trace more, noticed line

 caused by: java.lang.illegalargumentexception: binary xml file line #2: duplicate id 0x7f040066, tag null, or parent id 0x0 fragment com.google.android.gms.maps.supportmapfragment 

which lead me google like, solved issue:

duplicate id, tag null, or parent id fragment com.google.android.gms.maps.mapfragment


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -