수색…


간단한 예

RoboGuice는 Google 고유의 Guice 라이브러리를 사용하여 Android에 대한 의존성 삽입의 간편성과 간편함을 제공하는 프레임 워크입니다.

@ContentView(R.layout.main)
class RoboWay 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); 
        name.setText( "Hello, " + myName ); 
    } 
} 

Gradle 프로젝트 설치

gradle 빌드 파일의 종속성 섹션에 다음 pom을 추가하십시오.

project.dependencies {
    compile 'org.roboguice:roboguice:3.+'
    provided 'org.roboguice:roboblender:3.+'
}

@ContentView 주석

@ContentView 어노테이션은 액티비티 개발을 더욱 완화하고 setContentView 문을 대체하기 위해 사용할 수있다.

@ContentView(R.layout.myactivity_layout)
public class MyActivity extends RoboActivity {
    @InjectView(R.id.text1) TextView textView;

    @Override
    protected void onCreate( Bundle savedState ) {
        textView.setText("Hello!");
    }
}

@InjectResource 주석

모든 유형의 리소스, 문자열, 애니메이션, Drawables 등을 삽입 할 수 있습니다.

첫 번째 리소스를 액티비티에 삽입하려면 다음을 수행해야합니다.

  • RoboActivity에서 상속
  • @InjectResource로 리소스에 주석 달기

@InjectResource(R.string.app_name) String name;

@InjectResource(R.drawable.ic_launcher) Drawable icLauncher;

@InjectResource(R.anim.my_animation) Animation myAnimation;

@InjectView 주석

@InjectView 주석을 사용하여 모든 뷰를 삽입 할 수 있습니다.

다음을 수행해야합니다.

  • RoboActivity에서 상속
  • 콘텐츠보기 설정
  • @InjectView로 견해에 주석 달기

@InjectView(R.id.textView1) TextView textView1;

@InjectView(R.id.textView2) TextView textView2;

@InjectView(R.id.imageView1) ImageView imageView1;

RoboGuice 소개

RoboGuice 는 Google 고유의 Guice 라이브러리를 사용하여 Android에 대한 의존성 삽입의 간편성과 간편함을 제공하는 프레임 워크입니다.

RoboGuice 3는 애플리케이션 코드를 줄였습니다. 코드가 적 으면 버그에 대한 기회가 줄어 듭니다. 또한 코드를 더 쉽게 따라 할 수 있습니다. 코드가 더 이상 Android 플랫폼의 메커니즘으로 산재 해 있지 않지만 이제는 응용 프로그램에 고유 한 실제 논리에 집중할 수 있습니다.

아이디어를 얻으려면 다음과 같은 전형적인 Android Activity 의 간단한 예를 살펴보십시오.

class AndroidWay 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 ); 
        } 
    }

이 예제는 19 행의 코드입니다. onCreate() 통해 읽으려고한다면, 정말로 중요한 유일한 것을 찾기 위해 5 행의 상용구 초기화를 건너 뛰어야 name.setText() : name.setText() . 그리고 복잡한 활동은 이런 종류의 초기화 코드로 끝날 수 있습니다.

RoboGuice 사용하여 작성된 동일한 앱과 비교해보십시오.

 @ContentView(R.layout.main)
    class RoboWay 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); 
            name.setText( "Hello, " + myName ); 
        } 
    }

RoboGuice의 목표는 일반적으로 Android에서 유지 관리해야하는 모든 초기화 및 라이프 사이클 코드가 아닌 앱에 대한 코드를 작성하는 것입니다.

주석 :

@ContentView 주석 :

@ContentView 어노테이션은 액티비티 개발을 더욱 완화하고 setContentView 문을 대체하기 위해 사용할 수있다.

@ContentView(R.layout.myactivity_layout)
    public class MyActivity extends RoboActivity {
        @InjectView(R.id.text1) TextView textView;

        @Override
        protected void onCreate( Bundle savedState ) {
            textView.setText("Hello!");
        }
    }

@InjectResource 주석 :

먼저 RoboActivity를 상속받은 활동이 필요합니다. 그런 다음 res / anim 폴더에 애니메이션 my_animation.xml이 있다고 가정하면 주석을 사용하여 참조 할 수 있습니다.

public class MyActivity extends RoboActivity {
    @InjectResource(R.anim.my_animation) Animation myAnimation;
    // the rest of your code
}

@ 삽입 주석 :

RoboActivity에서 활동이 확장되었는지 확인하고 시스템 서비스 구성원에게 @Inject를 주석으로 추가하십시오. Roboguice가 나머지를 할 것입니다.

class MyActivity extends RoboActivity {
    @Inject Vibrator vibrator;
    @Inject NotificationManager notificationManager;

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

        // we can use the instances directly!
        vibrator.vibrate(1000L); // RoboGuice took care of the getSystemService(VIBRATOR_SERVICE)
        notificationManager.cancelAll();

Views, Resources, Services 및 기타 안드로이드 전용 기능 외에도 RoboGuice는 Plain Old Java Objects를 주입 할 수 있습니다. 기본적으로 Roboguice는 POJO에 인수가없는 생성자를 호출합니다.

class MyActivity extends RoboActivity {
    @Inject Foo foo; // this will basically call new Foo();
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow