Evento cuando se completa el FragmentTransaction
¿Es posible tener un evento cuando se completa FragmentTransaction?
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, fragment).commit();
De hecho, utilizo un cajón para mi aplicación y me gustaría activar invalidateOptionsMenu();
Cuando la transacción se completa para cambiar el menú de mi barra de acción.
- Invocar una llamada de escucha programáticamente en android
- ¿Cómo detectar cuando el usuario pulsa la tecla "menú" en su dispositivo Android?
- ¿Cómo puedo tener oyente de pantalla ociosa?
- Escuchando la notificación en Android
- ¿Es posible crear un servicio Android que escuche las pulsaciones de teclas de hardware?
- Android Listener para detectar cuando se está presionando la pantalla
- ¿Por qué mi onItemSelectedListener no se llama en un ListView?
- Android: escucha para detectar cambios en las propiedades de una vista (por ejemplo, android: layout_marginTop)
- OnCompletion escucha con MediaPlayer
- ¿Cómo puedo cambiar el editor?
- Android GridLayout obtener fila / columna
- Android ¿cuántos hilos puedo tener?
- Android GridView OnItemLongClick escuchador llamado después de OnItemClick
No necesita esperar a que se complete la transacción de fragmentos, puede llamar
getSupportFragmentManager().executePendingTransactions();
Después de la llamada de función commit ().
Esto asegurará que la transacción esté completa.
Hei! Prueba esto:
private OnBackStackChangedListener backStackListener = new OnBackStackChangedListener() { @Override public void onBackStackChanged() { String name = ""; int position = getSupportFragmentManager().getBackStackEntryCount(); if(position!=0){ FragmentManager.BackStackEntry backEntry=getSupportFragmentManager().getBackStackEntryAt(position-1); name=backEntry.getName(); } if(position==0){ mainActionBar(); } else if(name=="someWord"){ mainActionBar2(); } else{ mainActionBar3(); } } }; getSupportFragmentManager().addOnBackStackChangedListener(backStackListener);
Y en Transaction add tag to backStack como esto:
getSupportFragmentManager().beginTransaction() .replace(R.id.main, SomeFragment.newInstance(some argument)) .addToBackStack("someWord").commit();
@Override public void onResume() { super.onResume(); getActivity().invalidateOptionsMenu(); }
Cuando se completa la FragmentTransaction, se llamarán los métodos del ciclo de vida del Fragmento, como onResume ()
FYI, fragmento puede tiene su propio menú, ver http://developer.android.com/reference/android/app/Fragment.html#setHasOptionsMenu (boolean)
Puede utilizar el consejo dado en esta respuesta — ejecutar el código que necesita después de que la transacción se complete desde el método onAnimationEnd
.
Para que esto funcione, debe establecer una animación en la FragmentTransaction utilizando, por ejemplo,
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
Podría considerar el uso de commitNow () en lugar de commit () y, a continuación, puede estar seguro de que la transacción ha finalizado. Por supuesto, es una cuestión de la complejidad de la transacción si usted debe hacerlo o no.
- Cómo establecer los elementos de elección única dentro de AlertDialog?
- ¿Cuál es el tamaño máximo de un valor de preferencia compartida de Android?