studio programacion herramientas fundamentos crear con avanzado aplicaciones android android-actionbar swipe

programacion - Android: cómo recrear la barra de acción cuando se modifica un fragmento



manual android studio avanzado (4)

Finalmente no pude encontrar ninguna manera de lograr esto.

Lo mejor sería hacer de la barra de acción una parte del fragmento, no de la actividad, pero es imposible.

Terminé con el menú y el menú de la barra de acción de borrado cuando comienza el barrido (puede configurar un oyente especial en PageView) y el menú de configuración y el título nuevamente cuando se muestra el barrido completo y se muestra un fragmento nuevo.

En da un poco de tiempo y la barra de acción se ve extrañamente vacía durante el barrido, pero es mejor que puedas hacer.
API de Android es c ...

Tengo una actividad que muestra algunos fragmentos. La vista de actividad solo contiene ViewPager inicializado con FragmentPagerAdapter personalizado. Este adaptador proporciona navegación entre 3 fragmentos.

Todo parece funcionar bien, excepto la barra de acción.

Anulo el método onCreateOptionsMenu () en mis fragmentos para crear una barra de acción individual para cualquier fragmento:

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.clear(); //fragment specific menu creation }

Cuando lo hago, aparece un nuevo fragmento, pero la barra de acción permanece igual durante unos segundos. Probablemente, después de unos segundos, se llame a este método y se cambie la barra de acción.

Esto se ve bastante mal cuando la barra de acción se cambia poco después de que finaliza el barrido. ¿Cómo puedo volver a crear la barra de acción inmediatamente, antes de comenzar el deslizamiento?


Puedes pedir a Android que vuelva a crear la barra de acción antes de que lo haga automáticamente llamando a invalidateOptionsMenu();

Haga esto en algún lugar cerca del punto en el que cambia los fragmentos para intentar disminuir el ''retraso'' entre el cambio de fragmento y la barra de acción.

Editar

Una solución completa puede tener este aspecto:

class activity extends Activity{ private void switchFragment(){ ...do fragment changing stuff activity.invalidateOptionsMenu(); } } class someFragment extends Fragment{ @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.clear(); //fragment specific menu creation } }

cualquier fragmento que esté abierto durante el

activity.invalidateOptionsMenu();

entonces llamará a su

onCreateOptionsMenu

y usted puede hacer la creación del menú específico de fragmento allí


Se puede hacer implementando onCreateOptionsMenu y llamando a setHasOptionsMenu (true) en la devolución de llamada onAttach en cada fragmento y cambiar las acciones en consecuencia.

Para mostrar el fragmento sin ninguna acción, setHasOptionsMenu (false) en él