Sök…


Enkelt exempel

RoboGuice är ett ramverk som ger enkelhet och enkelhet med beroende injektion till Android, med Googles eget Guice-bibliotek.

@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 ); 
    } 
} 

Installation för Gradle Projects

Lägg till följande pom till beroendeavsnittet i din gradle build-fil:

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

@ContentView-kommentar

@ContentView-anteckningen kan användas för att ytterligare lindra utvecklingen av aktiviteter och ersätta setContentView-uttalandet:

@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-kommentar

Du kan injicera alla typer av resurser, strängar, animationer, teckningar etc.

För att injicera din första resurs i en aktivitet måste du:

  • Arv från RoboActivity
  • Kommentera dina resurser med @InjectResource

Exempel

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

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

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

@InjectView-kommentar

Du kan injicera valfri vy med @InjectView-kommentaren:

Du måste:

  • Arv från RoboActivity
  • Ställ in din innehållsvy
  • Kommentera dina vyer med @InjectView

Exempel

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

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

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

Introduktion till RoboGuice

RoboGuice är ett ramverk som ger enkelhet och enkelhet med beroende injektion till Android, med Googles eget Guice-bibliotek.

RoboGuice 3 tappar ner din applikationskod. Mindre kod betyder färre möjligheter för buggar. Det gör också din kod lättare att följa - inte längre är din kod besatt med Android-plattformens mekanik, men nu kan den fokusera på den faktiska logiken som är unik för din applikation.

För att ge dig en idé, ta en titt på detta enkla exempel på en typisk 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 ); 
        } 
    }

Detta exempel är 19 kodrader. Om du försöker läsa igenom onCreate() måste du hoppa över fem rader med initialisering av pannplattan för att hitta den enda som verkligen betyder: name.setText() . Och komplexa aktiviteter kan sluta med mycket mer av den här typen av initialiseringskod.

Jämför detta med samma app, skriven med 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 ); 
        } 
    }

RoboGuices mål är att få din kod att handla om din app, snarare än att handla om alla initialiserings- och livscykelkoder som du vanligtvis måste behålla i Android.

anteckningar:

@ContentView-kommentar:

@ContentView-anteckningen kan användas för att ytterligare lindra utvecklingen av aktiviteter och ersätta setContentView-uttalandet:

@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-kommentar:

Först behöver du en aktivitet som ärver från RoboActivity. Sedan, förutsatt att du har en animation my_animation.xml i din res / animmapp, kan du nu referera till den med en kommentar:

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

@ Infoga kommentar:

Du ser till att din aktivitet sträcker sig från RoboActivity och kommenterar din systemtjänstmedlem med @Inject. Roboguice kommer att göra resten.

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();

Förutom vyer, resurser, tjänster och andra Android-specifika saker kan RoboGuice injicera vanliga gamla Java-objekt. Som standard kommer Roboguice att anropa en ingen argumentkonstruktör på din 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow