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.

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.

  • Volver evento clave en EditText
  • Cómo destruir objeto de la clase PhoneStateListener?
  • Cómo detectar los eventos de MediaPlayer de youtube desde un servicio
  • ¿Cómo detectar pulsaciones de teclas de caracteres?
  • Cómo implementar OnZoomListener en MapView
  • OnCheckedChangeListener o OnClickListener con la sentencia if para CheckBox? ¿Cual es mejor?
  • Botón onClick y ListView onItemClick
  • Custom ListAdapter consistente en EditText pierde el foco llamado dos veces
  • Android: desliza hacia la izquierda. Detección de gestos
  • Android View.OnKeyListener: haga clic una vez, ejecute dos veces
  • Android TabWidget detectar clic en la pestaña actual
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.