Intentar eliminar fragmento de vista me da NullPointerException en mNextAnim

Tengo 3 fragmentos, un NavigationDrawer, un MapFragment y un “MapInfoFragment” definido por el usuario. Quiero que el “MapInfoFragment” aparezca semitransparente sobre la parte superior de MapFragment en ciertos eventos y desaparezca en otros. Realmente no me importa si elimino por completo el fragmento y creo uno nuevo cada vez, o simplemente cambio la visibilidad y la información que se muestra. Actualmente solo bash usar la función .hide () de FragmentManager, pero también he intentado eliminar .remove y .detach con resultados similares.

Error:

03-18 14:28:10.965 24711-24711/com.[packageName].asTest D/AndroidRuntime﹕ Shutting down VM 03-18 14:28:10.965 24711-24711/com.[packageName].asTest E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.[packageName].asTest, PID: 24711 java.lang.NullPointerException: Attempt to write to field 'int android.app.Fragment.mNextAnim' on a null object reference at android.app.BackStackRecord.run(BackStackRecord.java:658) at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 

Activity_main.xml:

         

Código ofensivo:

 FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.hide(getFragmentManager().findFragmentById(R.id.map_info)); ft.commit(); 

Actualización 1

Cambié map_info_layout a map_info y no hay cambios en el error que recibo. Previamente había definido map_info_layout como id para la raíz FrameLayout del XML de diseño de MapInfoFragment, así que creo que map_info_layout y map_info apuntaban a lo mismo.

Actualización 2: Mi solución

Resultó que tenía MapInfoFragment extendiendo android.support.v4.app.Fragment lugar de android.app.Fragment y estaba usando android.app.FragmentTransaction lugar de android.support.v4.app.FragmentTransaction . Cambié todo a android.app. ya que no estoy interesado en la compatibilidad de dispositivos anteriores. Gracias Fllo.

Actualización 3: solución general

Deja de tratar de ocultar objetos nulos

Sé que lo has resuelto tú mismo, pero quiero explicarte cómo ocurre este error, ya que simplemente me pasó a mí.

Básicamente llama a hide() , remove() , etc., con un valor nulo.

El error no es obvio, y el seguimiento de la stack no se origina en sus propias fonts cuando esto sucede, por lo que no es trivial darse cuenta de lo que es.

También ocurre cuando llamas a FragmentManager.popBackstack() sin que haya un fragmento en la backstack.

esto se debe a que agrega o muestra u oculta un fragmento que ahora es nulo, intente verificar si es nulo, ¡antes de usarlo!

Mi problema era que getFragments () de FragmentManager a veces devuelve una lista donde algunos fragmentos son nulos, y estaba eliminando esos fragmentos nulos.

Me pasó a mí solo cuando de uno de los fragmentos en el cajón de navegación mostré un DialogFragment usando

 newFragment.show(getFragmentManager(), "dialog"); 

Si en su lugar yo usé

 newFragment.show(getChildFragmentManager(), "dialog"); 

esto no sucedió

NOTA: El locking no me sucedió al mostrar o cerrar el diálogo, sino al cambiar a otro fragmento del panel de navegación.

Correctamente llame a show () y hide () …

  private void showFragment(int fragmentIndex, boolean addToBackStack) { FragmentManager fm = getFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); for (int i = 0; i < fragments.length; i++) { if (i == fragmentIndex) { transaction.show(fragments[i]); } else { transaction.hide(fragments[i]); } } if (addToBackStack) { transaction.addToBackStack(null); } transaction.commit(); }