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) { } } 
  • android: usando ActivityGroup para integrar actividades
  • Lengüetas verticales en Android
  • Cómo hacer oval shape tabhost en android
  • ¿Por qué mis métodos ServiceConnection nunca se ejecutan?
  • Cómo crear el centro de tabbar en android?
  • Android - android.widget.TabHost no se puede convertir en android.support.v4.app.FragmentTabHost
  • Android FragmentTabHost
  • Deshabilitar las teclas DPAD en android
  • Buscando un estilo TabHost universal que funcione en Android, HTC Sense, Samsung, etc. skins
  • Cómo cambiar el tamaño de fuente de tabhost en android
  • Android: TabActivity obsoleto, el uso de fragmentos?
  • Interesting Posts
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.