bboks.net™

Android에서 RoboGuice를 이용한 Dependency Injection 본문

Mobile Programming/Android

Android에서 RoboGuice를 이용한 Dependency Injection

bboks.net 2012. 11. 5. 14:55

1. Eclipse와 Maven을 이용해 Android 프로젝트 생성

2. DI를 할 클래스 추가

3. Maven을 이용해 roboguice 설치

pom.xml의 dependencies에 아래의 내용 추가

<dependency>
      <groupId>org.roboguice</groupId>
            <artifactId>roboguice</artifactId>
      <version>2.0</version>
</dependency>

4. Activity 수정

4.1 상속하는 Activity를 android.app.Activity에서 roboguice.activity.RoboActivity로 변경

4.2 Inject할 클래스를 선언하고 @Inject 어노테이션 추가

package net.bboks.guice.guice_first;

import com.google.inject.Inject;

import roboguice.activity.RoboActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class HelloAndroidActivity extends RoboActivity{

    private static String TAG = "guice-first";

    @Inject
    HelloService service;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
		Log.i(TAG, "onCreate");
        setContentView(R.layout.main);
        Log.i(service.sayHello("android"), "Service Inject");
        
        Button btn = (Button)findViewById(R.id.btn);
        
        btn.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				String str = service.sayHello("android");
				Toast.makeText(HelloAndroidActivity.this, str, Toast.LENGTH_LONG).show();
			}
		});
    }
}


5. 에뮬레이터로 구동시켜보면 해당 오브젝트가 Inject되어 동작하는 것을 확인할 수 있다.


[참고] rogoguice

          [안드로이드] RoboGuice 2.0 메모

    Using Roboguice to inject your dependencies in an Android app

    Installation for Maven Projects