android android-activity embed embedding android-tabhost

android: uso de ActivityGroup para incrustar actividades



android-activity embed (2)

Verifique el siguiente enlace

http://ericharlow.blogspot.com/2010/09/experience-multiple-android-activities.html

Es la solución para mí. Espero que te ayude también

Estoy en la fase de conceptualización / diseño de construir una aplicación y me he topado con un pequeño inconveniente. Básicamente, estaba buscando una forma de insertar una actividad en la UI de otra similar a como una TabHost / TabActivity. Habría una ventana en la parte superior de la pantalla que contendría la otra actividad, y debajo de eso aparecerían botones y controles que son independientes de la actividad anterior y siempre deberían estar visibles. El usuario podría navegar de una actividad a otra en la ventana sin causar ningún cambio en los controles a continuación.

Mientras investigaba el problema, me encontré con ActivityGroup, que parecía que sería útil, pero ¿cómo lo implementaría? ¿Alguien tiene experiencia con ActivityGroup o tiene otra idea?


Sí, implementaría un ActivityGroup, que será el contenedor de sus otras actividades. Cuando el usuario hace clic en uno de los botones, obtendría una referencia al LocalActivityManager, y lo usaría para iniciar e incrustar la actividad interna. Algo como esto:

LocalActivityManager mgr = getLocalActivityManager(); Intent i = new Intent(this, SomeActivity.class); Window w = mgr.startActivity("unique_per_activity_string", i); View wd = w != null ? w.getDecorView() : null; if(wd != null) { mSomeContainer.addView(wd); }

Tenga en cuenta que usar este método puede ser bastante complicado, ya que a menos que el enfoque sea el correcto, presionar los botones de hardware (como el botón de menú) solo activará eventos en el ActivityGroup en lugar de la actividad interna. Debe encontrar una forma de enfocar la actividad interna después de agregarla a la vista del contenedor, momento en el que ocurrirá la actividad interna y se propagará a la actividad del contenedor.

Se puede hacer, lo he hecho ... y funciona. Es un poco más complicado de lo que creo que debería ser.

De todos modos, obtuve la mayor parte de esta información mirando el código TabHost, que se puede encontrar aquí