TactilApp Logo

Roboguice: Inyección de dependencias

Sep 04, 2013 android, dependencias, roboguice No hay comentarios

roboguice-300x300

Nada más comenzar a desarrollar en Android, se echa en falta un “sistema” para simplificar la forma en que se inyectan los diferentes recursos en una actividad, véase por recurso una cadena, una imagen, una vista o un elemento de la vista.

Para ello, aparece la librería Roboguice, que permite que se pueda sustituir:

 public class MainActivity extends Activity {
      private TextView nombreDeUsuario; 
      private ImageView imagenDelUsuario;
      private Drawable icono; 
      private String cadena; 

      public void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.main);
          nombreDeUsuario  = (TextView) findViewById(R.id.nombreDeUsuario); 
          imagenDelUsuario = (ImageView) findViewById(R.id.imagenDelUsuario);
          icono            = getResources().getDrawable(R.drawable.icono); 
          cadena           = getString(R.string.cadena); 
      } 
  }

por:

@ContentView(R.layout.main) 
public class MainActivity extends RoboActivity {
      @InjectView(R.id.nombreDeUsuario)
      private TextView nombreDeUsuario;
      @InjectView(R.id.imagenDelUsuario)
      private ImageView imagenDelUsuario;
      @InjectResource(R.drawable.icono)
      private Drawable icono;
      @InjectResource(R.string.cadena)
      private String cadena; 

      public void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
      } 
  }

Con la consiguiente mejora en la legibilidad del código y mantenibilidad. Como se puede ver, empleando anotaciones podemos inyectar las dependencias muy fácilmente, sin necesidad de hacerlo dentro del método onCreate. Otras anotaciones que ofrece Roboguice son @InjectExtra, @Inject, @InjectFragment@InjectPreference. Por otro lado, necesitarás extender tu actividad de RoboActivity en lugar de Activity, como antes, o RoboListActivity, RoboMapActivity, etc. según el caso.

Finalmente, la instalación de Roboguice es muy sencilla, sólo tienes que añadir al ClassPath de tu proyecto estos 2 .jar, el propio Roboguice y el gestor de dependencias Guice.

Sobre Jose Da Rocha

Jose Da Rocha ha escrito 3 artículos en este blog.