RoboGuice adalah sebuah framework untuk Dependency Injection
di Android. Roboguice membuat code kita jadi lebih simple dan lebih mudah.
RoboGuice dapat melakukan inject View, Resource, System
Service atau object lain.
Pada tutorial ini saya ingin menjelaskan sekilas saja contoh
penggunaannya.
Langkah pertama download library jar RoboGuice terlebih
dulu. pada contoh ini menggunakan roboguice versi 2.0
Library jar pendukung yg diperlukan adalah :
- Guice.3.0-no_aop.jar : https://github.com/roboguice/roboguice/tree/master/roboguice/lib
- Roboguice-2.0.jar : http://repo1.maven.org/maven2/org/roboguice/roboguice/2.0/
- Javax.inject-1.jar : http://mvnrepository.com/artifact/javax.inject/javax.inject
Import semua jar tersebut ke dalam forlder ‘libs’ android
project kita.
Mungkin dengan banyaknya element (misal : TextView,
InputText, Button dll ) yg kita gunakan
di sebuah Activity akan membuat kita lebih banyak juga menuliskan code untuk
casting findById().
Misalnya : (TextView) findById(R.id.text_name);
Jika tidak dilakukan hal ini maka element yg kita panggil
nanti akan null.
Mungkin jika cuma beberapa tidak masalah. Tapi jika sudah
banyak sekali jumlahnya jadi membosankan juga ngetiknya.
Roboguice bisa menjembatani hal ini.
Mari kita lihat contoh
dari code yg default tanpa Injection.
class TestAtivity extends Activity {
TextView name;
ImageView thumbnail;
LocationManager loc;
Drawable icon;
String myName;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
name = (TextView) findViewById(R.id.name);
thumbnail = (ImageView) findViewById(R.id.thumbnail);
loc = (LocationManager) getSystemService(Activity.LOCATION_SERVICE);
icon = getResources().getDrawable(R.drawable.icon);
myName = getString(R.string.app_name);
name.setText( "Hello, " + myName );
}
}
Sekarang kita lihat code yg menggunakan roboguice Injection.
class TestActivity extends RoboActivity {
@InjectView(R.id.name) TextView name;
@InjectView(R.id.thumbnail) ImageView thumbnail;
@InjectResource(R.drawable.icon) Drawable icon;
@InjectResource(R.string.app_name) String myName;
@Inject LocationManager loc;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
name.setText( "Hello, " + myName );
}
}
Code yg menggunakan RoboGuice jadi lebih pendek dan
sederhana. Baris codenya jadi lebih pendek. Mungkin ini bisa menghemat waktu
kita dalam mengetik code.
Langkahnya cukup simple Activity yg kita buat tinggal
extendnya kita ubah ke RoboActivity.
Kemudian di deklarasi elementnya ditambahkan @InjectView(id).
Id ini diambil dari R id element yg sudah kita buat di layout xml.
Misalnya : @InjectView(R.id.name) TextView name;
Maka di dalam method onCreate() kita tidak perlu
lagi casting findById().
Kita bisa langsung memanggil element itu tanpa takut
nilainya null. Misalnya ; name.setText( "Hello, " + myName );
Karena sudah dihandle oleh RoboGuice.
Sekian dulu tutorial dari saya. Mungkin hanya sampai
pada injectView saja. Untuk bagian selanjutnya akan saya jelaskan di tutorial
selanjutnya.
Untuk penjelasan yang lebih lengkap bisa juga
dilihat di https://github.com/roboguice/roboguice/wiki
Selamat mencoba.
Thanks. :)
1 comments:
One of the good RoboGuice tutorials.I've read today! Thank you! Have a good day! :)
Post a Comment