¿Cuál es la forma óptima de compartir código entre Actividades con diferentes clases base?
Tengo el siguiente problema:
Tengo una clase abstracta de la actividad , puedo llamar MyAbstractActivity , que contiene un cierto código que quisiera reutilizar (por ejemplo: una carpeta de servicio estándar, artículos comunes del menú, código común de la inicialización, etc. etc.). Normalmente lo usaría para subclasificar mis actividades concretas y terminar con ella.
Sin embargo, de vez en cuando necesito usar otro supertipo, como ListActivity o MapActivity .
- Ejemplo de un elemento spinner personalizado setDropDownViewResource
- Agregue el módulo existente bajo control de fuente de Subversion en IntelliJ IDEA
- ¿Cómo puedo construir un entorno local con un primer día de la semana personalizado?
- Diferencia entre los métodos de registro
- Error de sintaxis en token variabledeclaratorid esperado después de este token
Así que la pregunta es: ¿cómo evito duplicar ese código de soporte dentro de una Actividad, si tengo que usar otra clase base?
He pensado en una solución basada en el patrón decorador, como éste:
.
Sin embargo, veo un problema con este enfoque: ¿Qué hacer con los métodos protegidos (como onCreate () )? ¿Debería introducir una clase adicional de "puente" que los haga públicos para el propósito del decorador, de manera similar a la forma presentada abajo (comenzando a parecer un poco bizantino …)?
¿Cualquier otra manera?
Espero que me haya hecho relativamente claro. Gracias de antemano por cualquier comentario!
PD. Usar clases de utilidad estática no es una buena solución en mi opinión, ya que introduce una posibilidad de errores de programación difíciles de identificar.
- Cómo detectar si edittext tiene caracteres en inglés
- ¿Cuándo son TODOS los casos en que se llama al método onSaveInstanceState ()?
- Android Studio. Un error
- Tecnología de la parte posterior del androide - lengua (Java, Python) y IDE (CoderBuddy, exo Cloud, Cloud 9)
- Posible alternativa a las clases internas estáticas para evitar fugas de memoria en android / java?
- El nombre del paquete de refactorización rompe toda la aplicación
- Programar un evento para ser ejecutado en el futuro (Cron Job la forma de Android)
- ¿Cuál es la forma más segura de autorizar a un usuario en Android?
Si entiendo correctamente, ni los fragmentos ni el patrón del decorador son soluciones limpias o apropiadas para lo que quieres lograr. Fueron diseñados para resolver otros problemas.
Me encuentro moviendo el código de "soporte", o "framework", o "todo lo que verbose, repetitivo, boilerplate crap" a los métodos de utilidad estática. Esto no es necesariamente el enfoque que tomaría en un proyecto no-Android, pero en mis proyectos de Android, funciona bastante maldito bien.
Además, sepa que no necesita subclasificar ListActivity para tener un ListView.