/ / Nested SupportMapFragment - java, android, google-maps-api-3, mapa

SuporteNameMapFragment aninhado - java, android, google-mapas-api-3, mapa

Estou tendo a seguinte exceção ao adicionar o fragmento do mapa de suporte

05-22 23:51:12.817: E/AndroidRuntime(4515): java.lang.NullPointerException
05-22 23:51:12.817: E/AndroidRuntime(4515):     at kbh.a(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at mbi.a(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at lxn.a(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at lxm.a(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at fnb.onTransact(SourceFile:107)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.os.Binder.transact(Binder.java:361)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreateView(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at com.google.android.gms.maps.SupportMapFragment$a.onCreateView(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at com.google.android.gms.dynamic.a$4.b(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at com.google.android.gms.dynamic.a.a(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at com.google.android.gms.dynamic.a.onCreateView(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.Fragment.performResume(Fragment.java:1550)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:963)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.os.Handler.handleCallback(Handler.java:733)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.os.Handler.dispatchMessage(Handler.java:95)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.os.Looper.loop(Looper.java:136)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at android.app.ActivityThread.main(ActivityThread.java:5102)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at java.lang.reflect.Method.invokeNative(Native Method)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at java.lang.reflect.Method.invoke(Method.java:515)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
05-22 23:51:12.817: E/AndroidRuntime(4515):     at dalvik.system.NativeStart.main(Native Method)

Isso acontece aleatoriamente no aplicativo. Funciona bem uma vez, duas ou até três vezes, depois falha. Às vezes, o mapa aparece, mas depois falha.

Muito obrigado

Respostas:

0 para resposta № 1

Parece que você não pode ter um fragmento aninhado que tenha um SupportMapFragment.

O que eu estava fazendo é o seguinte:

MainFragment extends Fragment;
FirstChildFragment extends Fragment;
MapFragment extends Fragment;

O MainFragment, é o Fragmento Principal quevai ter sub-fragmentos a serem mostrados. O FirstChildFragment era outro fragmento que está sendo mantido dentro do MainFragment e, finalmente, o MapFragment foi mantido dentro do FirstChildFragment, o MapFragment inflou o SupportMapFragment e às vezes funcionava. Eu mudei o MapFragment para estender de SupportMapFragment, e funcionou ....

Talvez minha abstração no fragmento não esteja correta. Mas eu uso fragmentos em muitas situações, mantendo parte da View Logic encapsulada.

Obrigado e desculpe.