Subclassing SupportMapFragment results in a NullPointerException
Asked Answered
D

2

14

I'm currently implementing my own subclass of SupportMapFragment, using the google-play-services library r3.

I get a NullPointerException in one of the internal classes of the library when I try to add my Fragment to an Activity or ViewPager. Here's the relevant stacktrace:

java.lang.NullPointerException
    at maps.y.p.onResume(Unknown Source)
    at com.google.android.gms.maps.internal.IMapFragmentDelegate$Stub.onTransact(IMapFragmentDelegate.java:115)
    at android.os.Binder.transact(Binder.java:310)
    at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onResume(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment$a.onResume(Unknown Source)
    at com.google.android.gms.internal.c$1.a(Unknown Source)
    at com.google.android.gms.internal.c.a(Unknown Source)
    at com.google.android.gms.internal.c.onResume(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment.onResume(Unknown Source)
    at android.support.v4.app.Fragment.performResume(Fragment.java:1503)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
    at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:807)
    at android.support.v4.app.FragmentManagerImpl.startPendingDeferredFragments(FragmentManager.java:1112)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1461)
    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)

Apparently the internal map is null at this point.

Did anyone already run into this issue and has a solution?

Dalia answered 5/12, 2012 at 14:8 Comment(2)
I too am stuck on this problem?! How come you are subclassing? My reason is to use ActionBarSherlockPeer
Currently I can not. But I'll prepare something that I can show.Dalia
I
33

In your subclass of SupportMapFragment, did you override onCreateView(...)?

If you did, you'd need to also call super.onCreateView(...) in your own onCreateView(...) to let the super class to create its view. The fragment is tied closely with the underlying view.

Isooctane answered 7/12, 2012 at 3:59 Comment(3)
You're right. A super call was missing. Adding it solved my NPE. Thanks!Dalia
@Keyboardsurfer i am trying to something similar. can you share some skeleton structure of how to do it ? #13764766Hardshell
Hi what if I don't want to call the super.onCreateView()? I'm trying to this instead with OSM tiles, is it possible? #14985117Albinaalbinism
M
1

Try getChildFragmentManger() Also make sure you populate in or after onActivityCreated()


The Docs also seem to suggest that if the underlying Maps System is not running it will not work.

Also check you are using v11 of ACL (although I doubt thats the issue).

Mezoff answered 5/12, 2012 at 17:56 Comment(1)
Thanks. But I'm not trying to place a SupportMapFragment inside my Fragment. I'm trying to actually subclass the SupportMapFragment. Also I'm using the ACL v11 and have taken care of the potential null return value of getMap.Dalia

© 2022 - 2024 — McMap. All rights reserved.