1

I am trying to dynamically create a MapView and insert it into a running fragment.

I successfully insert the MapView into its parent layout ( that lies inside a fragment), but the map is not displayed and I get internal exceptions on the google maps library.

I suspect it's related to the forwarding of the fragment lifecycle methods. I have forwarded them, but I suspect only onResume is called, because the fragment was already alive when I inserted the mapView.

On the stack trace provided, you can see the internal mapview error, and that it comes from onResume.

Should I manually call onCreate and onStart? or I am doing something wrong?

Thanks in advance!

    06-11 21:11:29.799: W/System.err(7804): java.lang.NullPointerException
    06-11 21:11:29.799: W/System.err(7804):     at maps.aj.bi.b(Unknown Source)
    06-11 21:11:29.799: W/System.err(7804):     at bcz.onTransact(SourceFile:73)
    06-11 21:11:29.799: W/System.err(7804):     at android.os.Binder.transact(Binder.java:297)
    06-11 21:11:29.799: W/System.err(7804):     at com.google.android.gms.maps.internal.IMapViewDelegate$a$a.onResume(Unknown Source)
    06-11 21:11:29.799: W/System.err(7804):     at com.google.android.gms.maps.MapView$a.onResume(Unknown Source)
    06-11 21:11:29.799: W/System.err(7804):     at com.google.android.gms.internal.bb$6.b(Unknown Source)
    06-11 21:11:29.799: W/System.err(7804):     at com.google.android.gms.internal.bb$1.a(Unknown Source)
    06-11 21:11:29.799: W/System.err(7804):     at com.google.android.gms.maps.MapView$b.aP(Unknown Source)
    06-11 21:11:29.799: W/System.err(7804):     at com.google.android.gms.maps.MapView$b.a(Unknown Source)
    06-11 21:11:29.799: W/System.err(7804):     at com.google.android.gms.internal.bb.a(Unknown Source)
    06-11 21:11:29.799: W/System.err(7804):     at com.google.android.gms.internal.bb.onResume(Unknown Source)
    06-11 21:11:29.799: W/System.err(7804):     at com.google.android.gms.maps.MapView.onResume(Unknown Source)
            ---------------------
    06-11 21:11:29.799: W/System.err(7804):     at com.regaliz.funq.story.FunqLayer_map.delegate_onResume(FunqLayer_map.java:66)
    06-11 21:11:29.799: W/System.err(7804):     at com.regaliz.funq.story.FunqSlide.onResume(FunqSlide.java:622)
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.app.Fragment.performResume(Fragment.java:1503) 
            -------------------
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:807)
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.app.FragmentManagerImpl.startPendingDeferredFragments(FragmentManager.java:1112)
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1461)
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.view.ViewPager.populate(ViewPager.java:1064)
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.view.ViewPager.populate(ViewPager.java:911)
    06-11 21:11:29.799: W/System.err(7804):     at android.support.v4.view.ViewPager$3.run(ViewPager.java:242)
rupps
  • 9,712
  • 4
  • 55
  • 95

2 Answers2

0

I found inspiration on other post: Android Maps V2 MapView inside custom fragment (NPE)

I succeeded in dynamically instantiating the mapview after the fragment creation by manually calling, inside the fragment's onCreateView

MapsInitializer.initialize(context);
mapView.onCreate(bundle);

Docs say you have to forward onCreate but they talk in general for activities & fragments, and a Fragment also has an onCreate(bundle) method, however, in my experience (fragment), I had to forward onCreateView rather than onCreate to get all working.

Community
  • 1
  • 1
rupps
  • 9,712
  • 4
  • 55
  • 95
0

The solution that worked for me is calling mapView.onCreate(savedInstanceState) inside the onActivityCreated(savedInstanceState) method on the fragment.

It must have been an error in the Google docs. However, do also remember to call all the other members as per the Google Docs.

Hope it helps

Maxwell Weru
  • 453
  • 1
  • 3
  • 9