Android obtener actividad devuelve null

Estoy utilizando barra de acción en una actividad. Para cada lengüeta estoy mostrando diversa disposición. Dado que el diseño es demasiado pesado. Así que estoy inflando cada diseño en una vista. Así que en cada ficha seleccione

public void onTabSelected(Tab tab, FragmentTransaction ft) { if (mView == null) { mView = LayoutInflater.from(mAct).inflate(mLayout, null); // mAct is Activity reference } mAct.setContentView(mView); for (int i = 0; i < mFrags.length; i++) { mFrags[i] = (LutronFragment) mAct.getFragmentManager() .findFragmentById(mIds[i]); if (mFrags[i] != null) { mFrags[i].setupHeader(); } } } public void onTabUnselected(Tab tab, FragmentTransaction ft) { for (Fragment f : mFrags) { try { if (f != null) { ft.remove(f); } } catch (IllegalStateException e) { e.printStackTrace(); } } } 

Así que ahora si selecciono la pestaña segunda vez y hacer alguna operación en esa pestaña, la aplicación se estrelló en getActivity. (NullPointerException)

Por favor, sugiera si hay algún otro enfoque para poner en caché el diseño pesado.

El problema es más probable que esté utilizando un fragmento antiguo que se ha desvinculado de su actividad.

Por lo tanto, la primera vez que crea su fragmento, se añade a su actividad. Todo es bueno. A continuación, cuando cambie la pestaña, el fragmento puede o no puede separarse de la actividad. Cuando se vuelve a getActivity() , el fragmento antiguo se puede separar de la actividad y así getActivity() devuelve null.

Esto puede suceder si está intentando mantener referencias a sus Fragmentos, en lugar de acceder a ellos a través del FragmentManager .

También puede ocurrir si su adaptador está devolviendo una referencia a un fragmento en lugar de un nuevo fragmento. He caído en esta trampa.

(Publicar el código en el que creas tus fragmentos podría ayudarte)

Editar

Tal vez echar un vistazo a esto y cómo crear añadir sus oyentes de ActionBar. Necesita tener alcance para su Actividad. La forma en que lo hacen es definir el oyente en la Actividad / Fragmento (mediante la implementación de una interfaz) y luego adjuntarlo a la pestaña. Esto le dará alcance y es probablemente una forma más estable de hacer las cosas.

Esto puede ocurrir si crea un objeto anónimo dentro de un fragmento que llama a getActiviy() . Si getActivity() se llama en el objeto anónimo después de que el fragmento se extrae de la pila de fragmentos, getActivity() devolverá null. En ese momento, el fragmento ya no está asociado con una actividad.

  • Quiero configurar una imagen guardada en una tarjeta SD en el fondo de la presentación principal a través de mi aplicación
  • Android: ¿Cómo hacer la animación flip para la actividad de Android, al igual que el iphone flip horizontal de izquierda a derecha?
  • ¿Cómo mantener los atributos de diseño en la vista personalizada android combinada?
  • Eliminar la barra de título predeterminada
  • Cómo procesar todos los TouchEvents a nivel de ViewGroup (es decir, burbujear todos los eventos hasta que contengan viewgroup)
  • GetHeight devuelve 0 para todos los objetos de IU de Android
  • Alternativa a los pesos anidados con LinearLayouts
  • Centrar la vista de texto Debajo de un botón de imagen que está bajo el diseño relativo?
  • Cómo hacer un botón de acción flotante "solo de imagen"
  • ¿Cuándo sabemos cuándo se han establecido las opiniones de una actividad
  • Android Studio: Nuevo directorio creado que no aparece en la vista de carpetas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.