Создание подкласса SupportMapFragment приводит к исключению NullPointerException.

В настоящее время я реализую свой собственный подкласс SupportMapFragment. , используя библиотеку google-play-services r3.

Я получаю NullPointerException в одном из внутренних классов библиотеки, когда пытаюсь добавить свой фрагмент в Activity или ViewPager. Вот соответствующая трассировка стека:

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)

По-видимому, внутренняя карта на данный момент пуста.

Кто-нибудь уже сталкивался с этой проблемой и имеет решение?


person keyboardsurfer    schedule 05.12.2012    source источник
comment
Я тоже застрял на этой проблеме?! Как получилось, что вы подклассы? Моя причина - использовать ActionBarSherlock   -  person StuStirling    schedule 05.12.2012
comment
В настоящее время не могу. Но я подготовлю кое-что, что смогу показать.   -  person keyboardsurfer    schedule 06.12.2012


Ответы (2)


В вашем подклассе SupportMapFragment вы переопределили onCreateView(...)?

Если бы вы это сделали, вам также нужно было бы вызвать super.onCreateView(...) в вашем собственном onCreateView(...), чтобы позволить суперклассу создать свое представление. Фрагмент тесно связан с основным видом.

person davidw    schedule 07.12.2012
comment
Ты прав. Не хватало супервызова. Добавление этого решило мой NPE. Спасибо! - person keyboardsurfer; 08.12.2012
comment
@Keyboardsurfer Я пытаюсь сделать что-то подобное. Можете ли вы поделиться некоторой структурой скелета, как это сделать? stackoverflow.com/questions/13764266/ - person Harsha M V; 10.12.2012
comment
Привет, что, если я не хочу вызывать super.onCreateView()? Вместо этого я пытаюсь сделать это с плитками OSM, возможно ли это? stackoverflow.com/questions/14984617/ - person lyk; 21.02.2013

Попробуйте getChildFragmentManger() Также убедитесь, что вы заполняете onActivityCreated() или позже.


Документы также предполагают, что если базовая система карт не запущена, она не будет работать.

Также убедитесь, что вы используете v11 ACL (хотя я сомневаюсь, что проблема в этом).

person Chris.Jenkins    schedule 05.12.2012
comment
Спасибо. Но я не пытаюсь разместить SupportMapFragment внутри своего фрагмента. Я пытаюсь создать подкласс SupportMapFragment. Также я использую ACL v11 и позаботился о потенциальном нулевом возвращаемом значении getMap. - person keyboardsurfer; 06.12.2012