Поиск…


Простой пример

RoboGuice - это основа, которая обеспечивает простоту и удобство Injection Dependency для Android, используя собственную библиотеку Guice от Google.

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

Установка для проектных решений

Добавьте следующий 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 аннотация

Вы можете вводить любые типы ресурсов, строки, анимации, чертежи и т. Д.

Чтобы ввести свой первый ресурс в действие, вам необходимо:

  • Наследовать от 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 - это основа, которая обеспечивает простоту и удобство Injection Dependency для Android, используя собственную библиотеку Guice от Google.

RoboGuice 3 сокращает ваш код приложения. Меньше кода означает меньше возможностей для ошибок. Это также упрощает работу с вашим кодом - теперь ваш код не мешает механике платформы Android, но теперь он может сосредоточиться на фактической логике, уникальной для вашего приложения.

Чтобы дать вам представление, взгляните на этот простой пример типичной Activity Android:

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() . И сложные действия могут в конечном итоге получить гораздо больше такого типа кода инициализации.

Сравните это с тем же приложением, написанным с помощью 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. Затем, предположив, что у вас есть анимация my_animation.xml в папке res / anim, вы можете теперь ссылаться на нее с аннотацией:

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

@ Вводная аннотация:

Вы убедитесь, что ваша деятельность простирается от RoboActivity и аннотирует члена службы System с помощью @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();

В дополнение к представлениям, ресурсам, службам и другим специфичным для Android задачам RoboGuice может вводить обычные объекты Java. По умолчанию Roboguice вызовет конструктор аргументов no вашего 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