OnResume () no se activa en los elementos TabHost

Tengo un TabHost con dos tabs en él. La primera vez que cambie a la segunda tab onResume() método onResume() de tab's activity de mi segunda tab's activity . Luego tengo un AlertDialog mostrado y después de que desaparezca el método 'onResume ()' no se llama pero realmente lo espero. Supongo que la invocación de 'AlertDialog' activa el método onPause () 'y el' onResume () 'debería ser llamado antes de que' Activity 'se muestre realmente y listo para la interacción con el usuario. Pero en cara 'onPause ()' no se llama cuando vuelvo a la primera tab que es otra activity .

¿Puede aconsejar por qué los métodos 'onPause ()' y 'onResume ()' no se llaman y qué métodos se llaman después de mostrar un 'AlertDialog' o cambiar entre tabs ?

Supongo que la invocación de 'AlertDialog' dispara el método onPause () 'y el' onResume () 'debería ser llamado antes de que' Activity 'se muestre realmente y esté listo para la interacción con el usuario

AlertDialog no afecta el ciclo de vida de la actividad.

Echa un vistazo al diagrama de flujo del ciclo de vida de la actividad aquí.

Al cambiar entre las pestañas, si desea un método de devolución de llamada ¿por qué no utiliza un escucha TabChanged

Cuando se crea un TabHost para celebrar las actividades, los niños dentro de él no puede administrar sus propios métodos de lifecycle (onResume, onPause, onCreated, etc), y el padre (el titular) debe hacer todas las gestiones. He implementado este comportamiento sobrescribiendo onPause y onResume en el titular (la actividad que define el tabhost), como esto:

 @Override public void onPause() { super.onPause(); try { mlam.dispatchPause(isFinishing()); } catch (Exception e) {} } @Override public void onResume() { super.onResume(); try { mlam.dispatchResume(); } catch (Exception e) {} } 

Donde " mlam " es la instancia de LocalActivityManager. Con él, creo que su onResume / OnPause métodos va a ser activado. Espero que esto te ayude de alguna manera.

Tengo el mismo problema, y ​​lo intento, y funciona ~~

 private OnTabChangeListener TabChangeListener = new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { if (tabId.equals("download")){ mlocalActivityManager.dispatchPause(isFinishing()); mlocalActivityManager.dispatchResume(); tabs.setCurrentTab(1); } } }; 

@ Mthama respuesta funcionó perfectamente bien y había declarado LocalActivityManager como una variable local en el nivel Tabhost. Sin embargo, si sólo quería uno de los onResume () en una pestaña específica para disparar, hice lo siguiente.

 protected void onResume() { super.onResume(); try { if(mLocalActivityManager != null){ TabActivityOne tabActivity1 = (TabActivityOne) mLocalActivityManager.getActivity("tabId1"); if(tabActivity1 != null){ tabActivity1.onResume(); } } } catch (Exception e) { } } 
  • ¿Cómo devolver un resultado (startActivityForResult) de una actividad TabHost?
  • InputMethodManager contiene referencia al tabhost - Memory Leak - OOM Error
  • Android: tabhost en un fragmento, w / fragmentos como fichas
  • Reemplazo de TabActivity con FragmentActivity y Fragments
  • TabHost - cómo cambiar el texto de la pestaña en XML
  • La actividad no se está reiniciando en la pestaña cambiada en android
  • Android L Previsualizar el material denominado Tabs
  • Separadores de tabulación que no se muestran en ICS
  • Cómo implementar el menú de pestaña de Android sin tabhost obsoleto
  • Pestañas personalizadas en android
  • Android cómo putExtra a una actividad de la actividad TabHost?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.