android android-fragments nullpointerexception android-support-library fragmentpageradapter

Intente invocar el método virtual ''android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()'' en una referencia de objeto nula



android-fragments nullpointerexception (7)

Después de mucha investigación, parece que es un problema de la biblioteca de soporte:

Actividad con fragmentos y ViewPager se bloquea en el cambio de configuración
Problema con la biblioteca de soporte de Android 24.1.0

También encontré esta respuesta, pero parece inusual agregar una marca a mi código:

Intente invocar el método virtual ''android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler ()'' en un objeto nulo

¡ finishUpdate método finishUpdate de mi FragmentPagerAdapter como este y el problema resuelto por ahora!

@Override public void finishUpdate(ViewGroup container) { try{ super.finishUpdate(container); } catch (NullPointerException nullPointerException){ System.out.println("Catch the NullPointerException in FragmentPagerAdapter.finishUpdate"); } }

¿Alguna mejor respuesta? Por favor hagamelo saber...

Mi aplicación consta de 4 fragmentos como pestañas que se cargan dentro de un fragmento primario usando FragmentPagerAdapter .

El problema es cuando ejecuto la aplicación y presiono para volver a abrir la aplicación. Recibo este registro de errores:

FATAL EXCEPTION: main java.lang.NullPointerException: Attempt to invoke virtual method ''android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()'' on a null object reference at android.support.v4.app.FragmentManagerImpl.ensureExecReady(FragmentManager.java:1949) at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1965) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:620) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:513) ...

La línea de código dentro del fragmento principal es:

viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager);

y ViewPage y Adapter no son nulos !!

¡Tengo que mencionar que todo el ciclo de vida de mi Fragment se está gestionando y el problema nulo está ocurriendo dentro del adaptador !, ¡y el mismo Adaptador funciona bien cuando uso una Activity como padre en lugar de Fragment !


Estaba usando la referencia de actividad incorrecta para buscar

getSupportFragmentManager ()

El uso de la actividad correcta solucionó el accidente para mí.


Sé que puede ser tarde, pero aquí está mi error estúpido que no vi de inmediato:

@Override public void onStop() { super.onDestroy(); //I was calling the wrong super }


Tengo el mismo problema en mi proyecto. Pero es mi culpa.

POR QUÉ

Llamo a onBackPressed en una devolución de llamada después de que la actividad haya invocado a OnDestroy ();

Debido a que la instancia mHost en FragmentManager está configurada en nula después de que onDestroy () haya llamado.

y cuando llame a onBackPressed, usará la instancia mHost nuevamente.


Tuve el mismo problema y fue causado por la reutilización de la instancia de ViewPager por diferentes instancias de un fragmento. Una solución fue onDestroyView() el adaptador en el método onDestroyView() del fragmento.

@Override public void onDestroyView() { mViewPager.setAdapter(null); super.onDestroyView(); }

Proyecto demoing el problema y la solución se puede encontrar aquí .


Tuve el mismo problema. En mi caso, el problema fue que estaba reutilizando sin notar el adaptador de la vez que estaba abierto.

Busqué en la clase FragmentManager.java que envía la excepción y en la misma línea que se bloquea dice: "Debe llamarse desde el hilo principal del fragmento de host"

mi código era:

PagerAdapter adapter = MPageAdapter.getInstance(getSupportFragmentManager()); viewPager.setAdapter(adapter);

porque estaba usando mi PageAdapter como un puente para comunicarme entre los fragmentos, usé un patrón de singleton. Eso me funcionó bien, pero una vez que repetí esta estructura en otra actividad obtuve la misma excepción. Y la razón fue que olvidé destruir el singleton de mi clase de adaptador al final de cada uso.

@Override protected void onDestroy() { MPageAdapter.Destroy(); //I forgot this one, that makes singleton = null; super.onDestroy(); }


@Override public void onBackPressed() { // super.onBackPressed(); finish(); }

Anular el onBackPressed en la actividad ..
eliminar la súper llamada: super.onBackPressed
y llamada final.