Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Subclassing SupportMapFragment results in a NullPointerException

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?

like image 617
keyboardsurfer Avatar asked Dec 05 '12 14:12

keyboardsurfer


2 Answers

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.

like image 145
davidw Avatar answered Nov 15 '22 04:11

davidw


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).

like image 41
Chris.Jenkins Avatar answered Nov 15 '22 04:11

Chris.Jenkins