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
Post a Comment