Szukaj…


Prosty przykład

RoboGuice to platforma, która zapewnia prostotę i łatwość wstrzykiwania zależności w systemie Android przy użyciu własnej biblioteki Google Guice.

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

Instalacja dla projektów Gradle

Dodaj następujący pom do sekcji zależności pliku kompilacji stopni:

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

@ContentView adnotacja

Adnotacji @ContentView można użyć w celu dalszego usprawnienia rozwoju działań i zastąpienia instrukcji 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 adnotation

Możesz wstrzykiwać dowolne zasoby, ciągi, animacje, rysunki itp.

Aby wstrzyknąć pierwszy zasób do działania, musisz:

  • Dziedzicz z RoboActivity
  • Opisz swoje zasoby za pomocą @InjectResource

Przykład

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

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

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

@InjectView adnotacja

Możesz wstrzyknąć dowolny widok za pomocą adnotacji @InjectView:

Musisz:

  • Dziedzicz z RoboActivity
  • Ustaw widok zawartości
  • Opisz swoje widoki za pomocą @InjectView

Przykład

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

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

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

Wprowadzenie do RoboGuice

RoboGuice to platforma, która zapewnia prostotę i łatwość wstrzykiwania zależności w Androidzie przy użyciu własnej biblioteki Google Guice.

RoboGuice 3 wyszczupla kod aplikacji. Mniej kodu oznacza mniej okazji do błędów. Ułatwia także śledzenie kodu - kod nie jest już zaśmiecony mechaniką platformy Android, ale teraz może skupić się na logice właściwej dla Twojej aplikacji.

Aby dać Ci pomysł, spójrz na ten prosty przykład typowego Activity Androida:

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

Ten przykład to 19 linii kodu. Jeśli próbujesz odczytać onCreate() , musisz pominąć 5 wierszy inicjalizacji name.setText() aby znaleźć jedyny, który naprawdę ma znaczenie: name.setText() . A złożone działania mogą skończyć się znacznie większą ilością tego rodzaju kodu inicjującego.

Porównaj to z tą samą aplikacją napisaną przy użyciu 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 ); 
        } 
    }

Celem RoboGuice jest sprawienie, aby kod dotyczył Twojej aplikacji, a nie całego kodu inicjalizacji i cyklu życia, który zwykle musisz utrzymywać w Androidzie.

Adnotacje:

Adnotacja @ContentView:

Adnotacji @ContentView można użyć w celu dalszego usprawnienia rozwoju działań i zastąpienia instrukcji 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!");
        }
    }

Adnotacja @InjectResource:

Najpierw potrzebujesz działania, które dziedziczy po RoboActivity. Następnie, zakładając, że w folderze res / anim masz animację my_animation.xml, możesz teraz odwoływać się do niej z adnotacją:

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

@ Wstaw adnotację:

Upewnij się, że Twoja działalność wykracza poza RoboActivity, i dodaj adnotację do członka usługi systemowej @Inject. Roboguice zrobi resztę.

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

Oprócz widoków, zasobów, usług i innych rzeczy specyficznych dla Androida RoboGuice może wstrzykiwać zwykłe stare obiekty Java. Domyślnie Roboguice wywoła konstruktor no argument na twoim 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow