Ocultar / mostrar la barra de acción contextual mediante programación

Mi caso de uso:

Tengo una actividad con un ViewPager como su único elemento de vista, configurado con tres Fragment para sus tres páginas (usando un FragmentPagerAdapter ). Uno de estos fragmentos es un ListFragment , mientras que los otros dos Fragment regulares contienen algunas infografías.

La lista en el ListFragment permite "comprobar" los elementos, y los elementos de verificación trae la barra de acción contextual, presentando una lista de acciones posibles en los elementos seleccionados / marcados.

Mi problema:

Cuando selecciono un par de elementos de la lista, el CAB aparece. Pero cuando cambio páginas, el CAB permanece visible, presentando las acciones. Para empeorar las cosas, el ViewPager parece destruir a veces la vista del fragmento de lista – por lo tanto, la selección de las acciones lanza una excepción "java.lang.IllegalStateException: Content view not yet created" .

Mis preguntas:

  1. ¿Cómo puedo obtener el CAB para desaparecer cuando el usuario se aleja de la página ListFragment ?
  2. (Opcional) ¿Cómo puedo obtener el CAB para reaparecer cuando el ListFragment nuevo y algunos elementos todavía se comprueban.

Primero debe agregar ViewPager.OnPageChangeListener con ViewPager.OnPageChangeListener a su viewPager .

En el método onPageSelected llame a un método en su ListFragment para descartar su CAB.

EDITAR:

Para obtener el fragmento activo actual puede utilizar su etiqueta. La etiqueta puede ser computada con este método:

 private static String makeFragmentName(int viewId, int index) { return "android:switcher:" + viewId + ":" + index; } 

Donde viewId es el id del viewpager e indexa el índice de tab (position)

También puede reaccionar al fragmento que se oculta dentro del fragmento utilizando el método setUserVisibleHint, tal como se explica en https://stackoverflow.com/a/11075663/1199911

  • ¿Cómo manejar correctamente el modo de acción "hecho" botón?
  • Modo de Acción Contextual no filtrar toques
  • ¿Cómo seleccionar un elemento ListView después de un clic largo?
  • ¿Cómo se puede implementar multi-selección y Contextual ActionMode en ActionBarSherlock?
  • Abrir cuadro de diálogo personalizado en la selección de texto de la vista web
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.