Intereting Posts
Доступные папки в папке res? Что вызывает периодические всплески производительности, которые наблюдаются при обработке вычислительно дорогостоящих массивов на Nexus 4? Невозможно обновить инструменты Android SDK от 20 до 21 Храните, конвертируйте в видео поток экрана Android IsRegistered () vs. isRegisteredOnServer () Мобильное приложение HTML5 работает, когда экран телефона выключен? OnPause () как определить, вызвана ли новая активность приложения или если приложение полностью приостановлено? SetBackgroundColor в android Что означает номер рядом с цветом? Как они это делают? Диалоги на главном экране Как указать правильный размер диалогового окна в файле макета XML для диалогового окна Android? Лучшая практика для вложенных фрагментов в Android 4.0, 4.1 (<4.2) без использования библиотеки поддержки Иммерсивная функция в JB и ICS Android горизонтальный scrollview ведет себя как iPhone (пейджинг) Свертывание панели инструментов с помощью textShadow

Исключение нулевого указателя на mapFragment.getMapAsync (это) при инициализации карты google

Когда я использую v6.5.87 из Служб Google Play, я получаю исключение нулевого указателя, когда я вызываю getMapAsync() . Я использую SupportMapFragment в макете xml моего Fragment .

Мой код:

 SupportMapFragment mapFragment = (SupportMapFragment) getActivity() .getSupportFragmentManager().findFragmentById(R.id.mapFragment); mapFragment.getMapAsync(this); 

Примечание. Нет проблем при вызове getMap() на старых версиях Google Play Services, но getMap() теперь устарел ( docs ).

Вот трассировка стека для NPE:

 java.lang.NullPointerException at com.decos.fixi.fragments.FragmentLocationMap.initializeMap(FragmentLocationMap.java:132) at com.decos.fixi.fragments.FragmentLocationMap.onCreateView(FragmentLocationMap.java:95) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4921) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) at dalvik.system.NativeStart.main(Native Method) 

Наконец я получил ответ!

 SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager() .findFragmentById(R.id.mapFragment); 

вместо

 SupportMapFragment mapFragment = (SupportMapFragment) this.getSupportFragmentManager() .findFragmentById(R.id.mapFragment); 

GetChildFragmentManager () сделал трюк.

Кроме того, если вы используете SupportMapFragment mapFragment = (SupportMapFragment).....

Затем убедитесь, что вы установили этот атрибут class в XML

 class="com.google.android.gms.maps.SupportMapFragment" 

Не

 class ="com.google.android.gms.maps.MapFragment" 

В приложении AppCompatActivity

 FragmentManager mFragmentManager = getSupportFragmentManager(); SupportMapFragment mVTMapFragment =(SupportMapFragment)mFragmentManager.findFragmentById(R.id.mapRideview); mVTMapFragment.getMapAsync(this); 

И реализовать метод обратного вызова onMapReady

 @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; setUpMap(); } 

Вы реализуете функцию обратного вызова для вашего getMapAsync() ?

Если нет, вам необходимо реализовать метод onMapReady () в вашем коде, а затем вы можете добавлять метки или движущиеся onMapReady() камеры в свой onMapReady() .

Вы можете увидеть этот пример о onMapReady() .

заголовок

Запустите свою программу, добавив эту

  SupportMapFragment supportMapFragment" 

ДОБАВЛЯЙТЕ ЭТО В МЕТОДЕ СОЗДАНИЯ ()

 supportMapFragment = SupportMapFragment.newInstance(); FragmentManager fm = getFragmentManager(); fm.beginTransaction().replace(R.id.maplayout, new` `MapFragmentClass()).commit();` supportMapFragment.getMapAsync(this); android.support.v4.app.FragmentManager sfm = getSupportFragmentManager(); sfm.beginTransaction().add(R.id.map,supportMapFragment).commit(); 

Это будет проверять это